在JAVA中,从第一行指定矩阵大小的文件中读取矩阵
我正在尝试读取存储在txt文件中的矩阵n。指定矩阵大小的文件的第一行: 我的文件看起来像:在JAVA中,从第一行指定矩阵大小的文件中读取矩阵,java,matrix,bufferedreader,Java,Matrix,Bufferedreader,我正在尝试读取存储在txt文件中的矩阵n。指定矩阵大小的文件的第一行: 我的文件看起来像: 5 1 2 3 4 5 2 3 4 6 8 5 6 8 7 4 4 9 9 9 9 4 4 7 8 2 下面是我尝试的代码片段: bufferedReader.readLine(); for (int m = 0; m < size; m++) { String[] st = br.readLine().trim().split(" ");
5
1 2 3 4 5
2 3 4 6 8
5 6 8 7 4
4 9 9 9 9
4 4 7 8 2
下面是我尝试的代码片段:
bufferedReader.readLine();
for (int m = 0; m < size; m++) {
String[] st = br.readLine().trim().split(" ");
System.out.println(st);
for (int n = 0;n < size; n++) {
inputArray[m][n] = Integer.parseInt(st[n]);
}
}
请任何人指出我错过了什么可能性。
这种方法中可能存在的错误是什么。让您的代码来说话。如果您使用清晰的方法名和变量名,那么每个人都应该理解您的代码。类似这样的东西,它使用Apache的FileUtils
int[][] parseMatrixFile() {
File file = getThatTxtFromSomewhere();
List<String> lines = FileUtils.readLines(file, "utf-8");
int matrixSize = Integer.parseInt(lines.get(0).trim());
List<String> matrixList = lines.subList(1, matrixSize);
int[][] matrix = getMatrix(matrixList, size);
return matrix;
}
int[][] getMatrix(List<String> matrixLines, int size) {
int[][] matrix = new int[size][];
for (int row = 0; row < size; row++) {
matrix[row] = getMatrixRow(matrixLines.get(row), size);
}
return matrix;
}
int[] getMatrixRow(String row, int matrixSize) {
int[] row = new int[matrixSize];
String[] stringedRow = row.trim().split(" ");
for (int i = 0; i < matrixSize; i++)
row[i] = Integer.parseInt(stringedRow[i]);
return row;
}
除了格式化之外,您的代码看起来还行,即缺少一些东西:大小的定义、设置的值、打印输出的方式、bufferedReader.readLine的内容;这意味着要做什么,如何定义inputArray,如何将文件读入bufferedReader等等-您可能想发布一个。矩阵的大小已经读取,第一行bufferedReader.readLine;跳过第一行更新:有一件奇怪的事情:Integer.parseIntst[i]-我可能是在别处定义的,因此很可能是错误的。我假设您想在这里使用n:Integer.parseIntst[n]。除此之外,您可能需要检查st的长度,因为即使它应该等于大小,我也不会指望在任何情况下都会出现编程错误、数据错误等。获得相同的输出:-看这个:
int[][] parseMatrixFile() {
File file = getThatTxtFromSomewhere();
List<String> lines = FileUtils.readLines(file, "utf-8");
int matrixSize = Integer.parseInt(lines.get(0).trim());
List<String> matrixList = lines.subList(1, matrixSize);
int[][] matrix = getMatrix(matrixList, size);
return matrix;
}
int[][] getMatrix(List<String> matrixLines, int size) {
int[][] matrix = new int[size][];
for (int row = 0; row < size; row++) {
matrix[row] = getMatrixRow(matrixLines.get(row), size);
}
return matrix;
}
int[] getMatrixRow(String row, int matrixSize) {
int[] row = new int[matrixSize];
String[] stringedRow = row.trim().split(" ");
for (int i = 0; i < matrixSize; i++)
row[i] = Integer.parseInt(stringedRow[i]);
return row;
}