需要帮助阅读文本文件

时间:2018-10-13 18:27:32

标签: java adjacency-matrix

到目前为止,我已经开发了一个使用邻接矩阵通过链接实现来构建图形的程序。

我坚持如何读取包含邻接矩阵的文本文件,以及如何使用该数据而不是手动输入邻接矩阵。

例如,一个包含以下内容的文本文件:

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

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

在这里,我假设文件将包含一个矩阵的数据,如下所示,但是我的代码可以轻松扩展为读取多个矩阵的数据并返回2d字节数组的列表。

4
0 1 1 0
1 1 1 1 
1 0 0 0 
1 1 0 1