阅读两个矩阵

时间:2017-11-17 05:04:30

标签: java matrix

我有一个文本文件,其中包含两个矩阵,格式如图所示,该图只是一个例子,矩阵的大小可能会有所不同。

请帮我看看这两个矩阵。

(第一个和第二个矩阵用空行分隔)

1 2 3 4
5 6 7 8
0 1 5 6

5 6 9
6 4 3
9 7 5
9 8 0

1 个答案:

答案 0 :(得分:0)

要将文件解析为2d矩阵,您必须逐行读取文件,拆分一行以获取矩阵行的成员,每次遇到空行时,将新矩阵添加到矩阵列表中。

以下代码表示如何执行此操作。 int[][][] matrices存储文件中的所有读取矩阵(原因,此代码不验证文件内容,并且不是优化代码,只显示如何操作)

int[][][] matrices = new int[][][] {}; //array of matrix
try (BufferedReader reader = new BufferedReader(
    new FileReader(new File("test.txt")))) 
{
    String line;
    int index = 0; //current matrix
    while ((line = reader.readLine()) != null)
    {
        if (!line.trim().equals(""))
        {
            // parse line to int array
            String[] memb = line.split(" ");
            int[] arr = new int[memb.length];
            for (int i = 0; i < memb.length; i++)
                arr[i] = Integer.parseInt(memb[i]);

            // add new matrix
            if (index == matrices.length)
                matrices = Arrays.copyOf(matrices, matrices.length + 1);

            int[][] matrix = matrices[index];
            if (matrix == null)
                matrix = new int[][] {};

            // add int array to matrix (line)
            matrix = Arrays.copyOf(matrix, matrix.length + 1);
            matrix[matrix.length - 1] = arr;
            matrices[index] = matrix;
        }
        else
        {
            // flag to increase matrices size
            index++;
        }
    }
}

// test output
for (int i = 0; i < matrices.length; i++)
{
    for (int j = 0; j < matrices[i].length; j++)
    {
        for (int k = 0; k < matrices[i][j].length; k++)
        {
            System.out.print(matrices[i][j][k]);
            System.out.print(" ");
        }
        System.out.print("\r\n");
    }
    System.out.print("\r\n");
}