有一个用 1 和 0 填充的文本文件。我正在尝试使用从该文件中获取的所有数据在 Java 中加载一个 N_by_M 矩阵。我不知道矩阵的尺寸提前,因为它取决于文件有多少数据。保证的是文件中的每一行都包含相同数量的字符。 我的代码片段有效,但我对此感到尴尬,因为:
- 我使用 BufferedReader 实例一次只是为了计算行数并关闭它并创建另一个实例只是因为我不知道如何倒带!
- 我正在使用第二个实例读取实际数据并加载到矩阵。
- 在一个循环中,我找到了列的大小。我只需要找到它一次。然而,它处于循环中,一次又一次地找到它是多余的。
请告诉我如何通过仅使用一次 BufferedReader 以及如何仅一次查找该列来改进它。
char[][] areas;
String path = "C:\\test\\data.txt";
BufferedReader br = new BufferedReader(new FileReader(path));
String s;
int numRows=0, numColumns=0;
while((s = br.readLine()) != null) {
if(numColumns==0)
numColumns=s.length();
numRows++;
}
br.close();
areas = new char[numRows][];
br = new BufferedReader(new FileReader(path));
int i=0;
while((s = br.readLine()) != null) {
areas[i] = s.toCharArray();
i++;
}
br.close();
最佳答案
我强烈建议您从List<String> lines = Files.readAllLines(Paths.get(path));
开始因为你想把所有的行都读成 char[]
s,你可以做类似的事情
List<String> lines = Files.readAllLines(Paths.get(path));
char[][] areas = new char[lines.size()][];
for (int i = 0; i < areas.length; i++) {
areas[i] = lines.get(i).toCharArray();
}
lines.clear(); // <-- since we wanted areas...
// ...
关于java - 如何在不知道尺寸的情况下使用从文件中获取的数据加载 Java 中的 N_by_M 矩阵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34967371/