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

fires 行の出力は正しく表示されますが、その後エラーが発生します。

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
    at gift1.main(CopyOfgift1.java:47)

私はJavaが初めてで、何が間違っているのかわかりません。すべてのヘルプは大歓迎です。ありがとうございました。

EDIT : 入力は次の形式です

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

それでは、あなたはlinbesを読みすぎています。行数を超えていないことを確認してください。

于 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 に答える