到目前为止,我已经开发了一个使用邻接矩阵通过链接实现来构建图形的程序。
我坚持如何读取包含邻接矩阵的文本文件,以及如何使用该数据而不是手动输入邻接矩阵。
例如,一个包含以下内容的文本文件:
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
答案 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;
}
在这里,我假设文件将包含一个矩阵的数据,如下所示,但是我的代码可以轻松扩展为读取多个矩阵的数据并返回2d字节数组的列表。
4
0 1 1 0
1 1 1 1
1 0 0 0
1 1 0 1