2016-04-03 72 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]);  
相关问题