0

运行此代码段时:

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
4

3 回答 3

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 );
        }
}
于 2013-03-28T14:55:56.640 回答
0

那你读林伯斯太多了。确保不超过行数。

于 2013-03-28T14:53:19.060 回答
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.

于 2013-03-28T14:59:15.417 回答