【问题标题】:Need help reading a text file需要帮助阅读文本文件
【发布时间】:2018-10-13 18:27:32
【问题描述】:
到目前为止,我已经开发了一个程序,它使用邻接矩阵来构建使用链接实现的图形。
我不知道如何读取包含邻接矩阵的文本文件,并使用该数据而不是手动输入邻接矩阵。
例如,包含以下内容的文本文件:
4
0 1 1 0
1 1 1 1
1 0 0 0
1 1 0 1
6
0 1 0 1 1 0
1 0 0 1 1 0
0 0 1 0 0 1
0 0 0 0 1 0
1 0 0 0 0 0
0 0 1 0 0 1
3
0 1 1
1 0 1
1 1 0
【问题讨论】:
标签:
java
adjacency-matrix
【解决方案1】:
您可以使用此方法从文件中读取矩阵数据。此方法返回一个包含 0 和 1 的二维字节数组。
public static void main(String[] args) throws IOException {
byte[][] matrix = getMatrixFromFile("matrix.txt");
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix[i].length; j++) {
System.out.print(matrix[i][j] + ((j + 1) == matrix[i].length ? "" : " "));
}
System.out.println();
}
}
public static byte[][] getMatrixFromFile(String filename) throws IOException {
List<String> lines = Files.readAllLines(Paths.get(filename));
int size = Byte.parseByte(lines.get(0));
byte[][] matrix = new byte[size][size];
for (int i = 1; i < lines.size(); i++) {
String[] nums = lines.get(i).split(" ");
for (int j = 0; j < nums.length; j++) {
matrix[i - 1][j] = Byte.parseByte(nums[j]);
}
}
return matrix;
}
这里我假设文件将包含一个矩阵的数据,如下所示,但我的代码可以轻松扩展为读取多个矩阵的数据并返回二维字节数组列表。
4
0 1 1 0
1 1 1 1
1 0 0 0
1 1 0 1