我已经安装了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);
错误行之前和之后,但奇怪的是,当我有错误行时什么都没有打印出来?
答案 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]);