2016-12-16 3 views
1

ファイルから読み込み中に問題が発生します。私はテキストファイルから読み込み、文字列を読み込んで行列に書き込もうとしています。問題は、IndexOutOfBounds例外があり、なぜこれが起こるのかわかりません。Javaからファイルを読み込んでいるときに異常な動作が発生する

これは私のコードです:

public static char[][] readTxt(String args[]) { 
    String file = args[0]; 
    try { 
     FileReader fr = new FileReader(file); 
     BufferedReader br = new BufferedReader(fr); 

     String line = br.readLine(); 

     //counter 
     int counter = 0; 

     String[] tam = line.split(","); 

     char[][] maze = new char[tam.length][tam.length]; 

     while (line != null) { 
      String[] values = line.split(","); 

      for (int i = 0; i < values.length; i++) { 
       maze[counter][i] = values[i].charAt(0); 
      } 
      counter++; 
      line = br.readLine(); 
     } 
     br.close(); 
     return maze; 
    } catch (Exception e) { 
     System.out.println("Exception reading file " + file + ": " + e); 
    } 
    return null; 
} 

それは私の入力は次のようになりchar[][] maze = new char[tam.length][tam.length];

でIndexOutOfBoundsをスロー:

:私もそれを変更しようとした

%,%,%,%,%,%,%,%,%,%,% %,C, , , ,C, , ,C, ,% %,%,%, , , ,%,%,%,%,% %,C, , , ,C, , , , ,% %, , , , , , , , , ,% %, , , , , , , , , ,% %, , , , , , , , , ,% %, , , , , , , , , ,% %, , , , , , , , , ,% %, , , , , , , , , ,% %,%,%,%,%,%,%,%,%,%,%

char[][] maze = new char[tam.length+1][tam.length+1]; 

今は動作しますが、理由はわかりません。何か案は?

PD:マトリックスを印刷したとき、私は何か変わったものを見ました。それは私の行列の右側にいくつかの空白文字が印刷されたように見えますが、私の入力ファイルに私がいけない空白文字を書いた:(

my matrix in java

任意のアイデア?

+3

最初の行はすでに読み込まれています。 – Bhoot

+0

'linea 'はどこから来たのですか? –

+1

実際にファイル内のデータは何ですか? –

答えて

1

はあなたの前提であること

私は、readLineへの呼び出しを互いに遠くに置いていません。ストリームでも同様に、nio.Filesと書くことができますか?

01カウンターをチェックする必要なし

何とか異なるあなたのコード、:

Character[][] maze = Files.lines(Paths.get(stringPathOrUri)) 
     .map(s -> s.split(",")) 
     .map(strings -> Stream.of(strings) 
          .map(s -> s.charAt(0)) // better: insert your transformation function here 
          .toArray(Character[]::new)) 
     .toArray(Character[][]::new); 

これはまだ改善することができますが、あなたのアイデアを得ることができます。

関連する問題