Это определенно логическая проблема в первую очередь, но я не могу решить, как решить эту проблему:
У меня есть файл .txt, который я читаю со всем алфавитом, состоящим из 1 и 0, например, это B, за которым следует C в TXT-файле:
0 0 1 1 1 1 0 0 0
0 0 1 0 0 0 1 0 0
0 0 1 1 1 1 0 0 0
0 0 1 0 0 0 1 0 0
0 0 1 1 1 1 0 0 0
0 0 0 1 1 1 0 0 0
0 0 1 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0
0 0 0 1 1 1 0 0 0
Вы можете разобрать буквы, следуя 1.
Что мне нужно сделать, так это прочитать каждую из этих букв в массив алфавита, каждая буква разделена пустой строкой, и буквы должны следовать этому формату. Это матрица чисел 5x9, которую мне нужно преобразовать в массив 45 x 1 и сохранить в алфавитном массиве из 26 букв.
Это для нейронной сети с оптическим распознаванием символов, которая мне нужна для работы с жестко закодированными числами, но чтение из файла данных оказалось уловкой.
Это то, что я имею до сих пор:
String[][] alphabet = new String[26][45];
float [][] trainingDataFile = new float[26][45];
int row = 0;
Scanner file = new Scanner(new BufferedReader(new FileReader("Alphabet.txt")));
/*
While the file has another line, read in data until empty line.
*/
while(file.hasNextLine())
{
String line = file.nextLine();
if(line.length() != 0)
{
String[] letters = line.split(" ");
alphabet[row] = letters;
} else {
row++;
}
}
В моей голове алгоритм будет идти:
Считайте данные и добавляйте к строке до пустой строки, затем увеличивайте до следующей буквы.
Но я не могу понять, как перевести это в код.
Кажется, я не могу понять, как продолжать читать блок одной буквы до пустой строки.