我有一个文本文件,其中包含两个矩阵,格式如图所示,该图只是一个例子,矩阵的大小可能会有所不同。
请帮我看看这两个矩阵。
(第一个和第二个矩阵用空行分隔)
1 2 3 4
5 6 7 8
0 1 5 6
5 6 9
6 4 3
9 7 5
9 8 0
答案 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");
}