java错误是:java.lang.ArrayIndexOutOfBoundsException:1

时间:2016-04-03 21:19:40

标签: java string io

我已经安装了Gradle,我正在尝试从文件中读取一些数据。

文件是

   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);

错误行之前和之后,但奇怪的是,当我有错误行时什么都没有打印出来?

1 个答案:

答案 0 :(得分: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]);