0

私はこれらすべてにかなり慣れていませんが、Texas Computer Science UIL イベントの練習をしていて、練習問題に取り組んでいますが、このエラーに遭遇しました。

Exception in thread "main" java.util.NoSuchElementException
    at java.util.Scanner.throwFor(Unknown Source)
    at java.util.Scanner.next(Unknown Source)
    at java.util.Scanner.nextInt(Unknown Source)
    at java.util.Scanner.nextInt(Unknown Source)
    at bridge.bridge.main(bridge.java:28)

これが私のコードです。正直なところ、見た目がひどいだけでなく、何が問題なのかわかりません。

import java.util.*;
import java.io.*;

public class bridge {

public static void main(String[] args) throws IOException {
    Scanner input = new Scanner(new File("bridge.dat"));
    int convoys = input.nextInt();
    int vehicles;
    int weight = 0;
    int speed = 0;
    int speedholder;
    int checker = 0;
    boolean placeholder = true;
    for(int i = 0; i < convoys; i++){
        vehicles = input.nextInt();
        for(int y = 0; y < vehicles; y++) {
            if(!placeholder) {
                placeholder = true;
                weight += checker;
                speedholder = input.nextInt();
                if(speedholder < speed || speed == 0) {
                    speed = speedholder;
                }
            }
            else {
                checker = input.nextInt();
                if(weight + checker > 42) {
                    placeholder = false;
                }
                else {
                    weight += checker;
                    speedholder = input.nextInt();
                    if(speedholder < speed || speed == 0) {
                        speed = speedholder;
                    }
                }
            }
        }
        System.out.println(speed);
        speed = 0;
        weight = 0;
    }
    input.close();
}
}

エラーが発生する前に「5」が出力されます。そして、私の入力ファイルは次のようになります。

2
8
10 10
5 25
40 5
35 15
12 23
30 20
42 25
8 30
10
42 10
23 30
40 5
2 10
1 20
4 30
6 28
28 3
17 8
35 10

どんな助けでも大歓迎です。私は同様の質問を探し回りましたが、これは少し複雑なエラーのように見えました.

4

1 に答える 1

1

aが aScannerをスローする場合NoSuchElementException、入力の最後に達した後でスキャナーから読み取ろうとしていることを意味します。

入力の最後にいるかどうかを知りたい場合は、 を使用できますhasNextInt

そこから行ってください。

于 2015-01-27T01:13:11.243 に答える