1

この簡単なコード:

import java.util.Scanner;

public class TestScanner {

    public static void main(String[] args){

        Scanner sc1 = new Scanner(System.in);
        int number1 = sc1.nextInt();
        sc1.close();

        Scanner sc2 = new Scanner(System.in);
        int number2 = sc2.nextInt();
        sc2.close();
    }

}

常にこのエラーが表示されます:

Exception in thread "main" java.util.NoSuchElementException
    at java.util.Scanner.throwFor(Scanner.java:838)
    at java.util.Scanner.next(Scanner.java:1461)
    at java.util.Scanner.nextInt(Scanner.java:2091)
    at java.util.Scanner.nextInt(Scanner.java:2050)
    at mainpkg.TestScanner.main(TestScanner.java:14)

これもうまくいきません。今度は終わりのないループに陥ります!

import java.util.Scanner;

public class TestScanner {

    public static void main(String[] args){

        Scanner sc1 = new Scanner(System.in);
        int number1 = sc1.nextInt();
        sc1.close();

        Scanner sc2 = new Scanner(System.in);
        while(!sc2.hasNextInt())
            ;
        int number2 = sc2.nextInt();
        sc2.close();
    }

}

なんで?

4

2 に答える 2

2

問題はsc1.close();、基になるストリームを閉じることです。2 回目は、閉じたストリームから読み込もうとしているので、明らかに失敗します。

于 2013-01-19T01:55:54.607 に答える
0

hasNextInt読むべきことが他にもあると仮定するのではなく、 で毎回チェックする必要があります。

于 2013-01-19T01:50:23.107 に答える