在JAVA中,从第一行指定矩阵大小的文件中读取矩阵

在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(" ");

我正在尝试读取存储在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(" ");
                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;
}