2016-04-03 71 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:我使用System.out.println(array-length);

之前和示數行之後,但奇怪的是,當我有示數線沒有打印?

+2

也許分裂並沒有給予更多的單一回報。嘗試打印'array.length'來查看它實際上有多少個元素。 – KevinO

+0

這是一個過於樂觀的分割,你認爲發生了什麼「。」行呢? – 2016-04-03 21:22:18

+2

另外,實際上,學會使用調試器,或者至少在代碼中添加System.out.println行,以查看變量包含的內容以及問題的來源。你不應該需要我們來診斷那種問題。 –

回答

0

在第一次迭代中,數組的大小隻有1,所以array[1]拋出ArrayIndexOutOfBoundsException

你需要調用System.out.println("Hero is: "+array[0]+" "+array[1]+" "+array[2]);外循環。

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]);  
相關問題