运行此代码段时:
for(int i=0; i<np; i++){
giver=f.readLine();
String[] numbers=f.readLine().split("\\s");
System.out.println(giver+" "+numbers[0]+" "+numbers[1]);
它正确地给出了火线的输出,但之后给出了错误。
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
at gift1.main(CopyOfgift1.java:47)
我是Java的新手,无法弄清楚我做错了什么。所有帮助将不胜感激。谢谢。
编辑:输入格式如下
amy
600 5
jane
477 9
clara
599 3
答案 0 :(得分:1)
尝试这个循环来弄清楚发生了什么:
for(int i=0; i<np; i++){
giver=f.readLine();
String assumedNumbers = f.readline();
try {
String[] numbers =f.readLine().split("\\s");
System.out.println(giver+" "+numbers[0]+" "+numbers[1]);
}
catch ( ArrayIndexOutOfBoundsException e ) {
System.out.println( "INVALID NUMBERS LINE '" + assumedNumbers + "'" );
throw( e );
}
}
答案 1 :(得分:0)
你正在阅读linbes太多了。 确保你没有超过行数。
答案 2 :(得分:0)
使用以下修改后的代码。
for(int i=0; i<np; i++){
giver=f.readLine();
String[] numbers=giver.split("\\s");
System.out.println(giver+" ");
for(String s:numbers) //inhance for loop
{
System.out.println(" "+s);
}
}
如果giver
不包含白色间隔字符串,那么您将无法获得输出,但永远不会获得ArrayIndexOutOfBoundException
。