2017-03-02 11 views
0

私はtxtファイルに格納されているn行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を印刷した後です:

inputArray is : 
1 
1 
1 
1 
1 

私は可能性を指摘してくれます行方不明 このアプローチのバグはありますか?

+1

はokishに見える、すなわちいくつかのものが欠けている:size' 'の定義を、あなたはそれを設定するどのような値、あなたの出力を印刷する方法、どのような'bufferedReader.readLine();'は、 'inputArray'がどのように定義されているのか、' bufferedReader'などにファイルを読み込む方法を指定しています - あなたはおそらく[mcve]を投稿したいと思うでしょう。 – Thomas

+0

マトリックスのサイズはすでに読み込まれており、最初の行はbufferedReader.readLine();この最初の行をスキップしてください – Kamalakar

+0

更新:1つの奇妙なことがあります: 'Integer.parseInt(st [i])' - 'i'はおそらく他のところで定義されており、したがって間違っている可能性があります。ここで 'n'を使いたいと仮定します:' Integer.parseInt(st [n]) '。それ以外に 'st'の長さをチェックしたいと思うかもしれません。それは' size'と同じであっても(プログラミングエラーやデータエラーなど)、それを信じていないからです。 – Thomas

答えて

1

あなたのコードで話しましょう。明確なメソッド名と変数名を使用する場合は、誰もあなたのコードを理解する必要があります。書式設定、コードのほかに、このような何か(それは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; 
} 
関連する問題