gpt4 book ai didi

Java从文件读取字母表到多维数组

转载 作者:行者123 更新时间:2023-11-30 02:00:26 30 4
gpt4 key购买 nike

这首先绝对是一个逻辑问题,但我似乎不知道如何解决这个问题:

我正在读取一个 .txt 文件,其中包含由 1 和 0 组成的整个字母表,例如 .txt 文件中的 B 后跟 C:

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++;
}

}

在我的脑海中,算法是这样的:读入数据并附加到字符串直到空行,然后递增到下一个字母。

但我不知道如何将其转换为代码。我似乎不知道如何继续阅读单个字母的 block 直到空行。

最佳答案

  1. 文件足够小,可以加载到内存中。 Java 7 nio 有一个单行方法可以做到这一点。

  2. 使用列表比使用数组容易得多,因为它们会随着数据的插入而自动增长。您可以根据需要将数组转换为列表,反之亦然。

这是我的解决方案:

    String[][] alphabet = new String[26][45];

try {
// read the entire file into memory
List<String> lines = Files.readAllLines(Paths.get("C://temp/xx.txt"));
// this will hold 45x1 array as list
List<String> concatenated = new ArrayList<>();
int row = 0;
for (String line : lines) {
if (line.isEmpty()) {
// convert list to array and add to matrix
alphabet[row] = concatenated.toArray(alphabet[row]);
concatenated = new ArrayList<>();
row++;
} else {
// convert result of split() to list and add to letter list
concatenated.addAll(Arrays.asList(line.split(" ")));
}
}
// take care of last letter
alphabet[row] = concatenated.toArray(alphabet[row]);
} catch (IOException e) {
e.printStackTrace();
}
Arrays.stream(alphabet).forEach(row -> System.out.println(Arrays.toString(row)));
}

关于Java从文件读取字母表到多维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53040348/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com