split()在for循环中的第一行之后不起作用

时间:2013-03-28 14:50:54

标签: java for-loop split

运行此代码段时:

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

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