2016-04-03 9 views
-3

Gradleがインストールされていて、ファイルからデータを読み取ろうとしています。Javaエラー:java.lang.ArrayIndexOutOfBoundsException:1

ファイルが

A; 1;2 
    B;2;3 
    C;4;5 
    H;5;6 
. 
. 
. 

であると私は最初の5つのレコード

InputStream inputFileStream = Main.class.getResourceAsStream("/inputFile.txt"); 
Scanner scanner = new Scanner(inputStream); 
     int counter = 5; 

     while (scanner.hasNext()) { 
       String line = scanner.nextLine(); 

       String[] array; 
       if(counter>=0) 
       { 

        array = line.split(";"); 
        System.out.println(line); 

      //  System.out.println("Hero is: "+array[0]+" "+array[1]+" "+array[2]);  
        counter--; 
       } 

     } 

に特別な何かをしようとしている問題は、ライン

System.out.println("Hero is: "+array[0]+" "+array[1]+" "+array[2]); 

に私が直面している、ということですエラーあり:

java.lang.ArrayIndexOutOfBoundsException: 1 

私が知っているのは、配列の外側にある値を取得することを意味しています。 しかし、なぜそれが起こっているのか分かりません。 どうすれば修正できますか? downvotersについては

:私は前にラインをerroring後System.out.println(array-length);

を使用していますが、奇妙なことは、私は何も印刷されないerroringラインを持っている場合ということですか?最初の繰り返しで

+2

おそらくスプリットは1回以上のリターンを与えませんでした。 'array.length'を印刷して実際にいくつの要素があるか調べてみましょう。 – KevinO

+0

それはあまりにも楽観的な分割です、あなたはどうなると思いますか?ライン? –

+2

また、実際には、デバッガを使用する方法、またはコードにSystem.out.println行を追加して、変数の内容と問題の原因を確認する方法を学んでください。この種の問題を診断する必要はありません。 –

答えて

0

、配列のサイズはそれほどarray[1]あなたはループの外System.out.println("Hero is: "+array[0]+" "+array[1]+" "+array[2]);を呼び出す必要がありArrayIndexOutOfBoundsException

を投げ、唯一の1です。

InputStream inputFileStream = Main.class.getResourceAsStream("/inputFile.txt"); 
Scanner scanner = new Scanner(inputStream); 
    int counter = 5; 
     while (scanner.hasNext()) { 
       String line = scanner.nextLine(); 
       String[] array; 
       if(counter>=0) 
       { 
        array = line.split(";"); 
        System.out.println(line); 
        counter--; 
       } 
     } 
System.out.println("Hero is: "+array[0]+" "+array[1]+" "+array[2]);  
関連する問題