2017-03-02 100 views
0

我試圖讀取n存儲在txt文件中的矩陣n。從JAVA中的第一行指定的矩陣大小的文件中讀取矩陣

我的文件的樣子:矩陣的文件指定大小的第一線

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

,但我得到的輸出喜歡打印後輸入數組:

inputArray is : 
1 
1 
1 
1 
1 

請任何人都可以指出我有什麼可能性失蹤。 這種方法可能存在什麼錯誤。

+1

除了格式化你的代碼看起來okish,即有些東西不見了:size'的'的定義,您所設置的值它,你如何打印輸出,是什麼'bufferedReader.readLine();'是爲了做什麼,inputArray是如何定義的,你如何將文件讀入'bufferedReader'等等 - 你可能想發佈一個[mcve]。 – Thomas

+0

矩陣的大小已經被讀取並且非常第一行bufferedReader.readLine();跳過這第一行 – Kamalakar

+0

更新:有一件奇怪的事情:'Integer.parseInt(st [i])'''我'可能是在別處定義的,因此很可能是錯誤的。我假設你想在這裏使用'n':'Integer.parseInt(st [n])'。除此之外,你可能想檢查'st'的長度,因爲即使它應該等於'size',在任何情況下我都不會指望(編程錯誤,數據錯誤等)。 – Thomas

回答

1

讓你的代碼進行談話。如果您使用清晰的方法名稱和變量名稱,則每個人都應該瞭解您的代碼。像這樣的東西(它使用Apache的文件實用程序)

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