0

Javaスキャナーを使用して整数を読み取るメソッドを作成しました。このメソッドは、スキャナーを閉じる前に正しく機能していますが、スキャナーを閉じようとすると、最初のスキャン中にプログラムが常にクラッシュします。

このコードの何が問題なのか誰か知っていますか?

private int SINT()
{
    System.out.println("Integer");
    Scanner scan = new Scanner(System.in);
    int p = 0;
    try 
    {
        p = scan.nextInt();
    }
    catch(Exception e)
    { 
        System.out.println("Not integer");
    }
    scan.close();
    return p;
}
4

2 に答える 2

3

Java 1.7 で利用可能な try-w/resources ブロック内で、いつでも Scanner を作成できます。AutoClosableインターフェイスを実装しているため、 scan.close().

int p = 0;
try (Scanner scan = new Scanner(System.in))
{
    p = scan.nextInt();
}
catch (Exception e)
{
    System.out.println("Not integer");
}
return p;
于 2013-04-17T15:18:50.310 に答える
1

java.util.Scanner.throwFor での java.util.NoSuchElementException (不明なソース)

何もないときに入力からトークンを読み取ろうとすると、例外が発生します

したがって、nextを呼び出している間に、スキャナーにスキャナーがあるかどうかを確認する必要があります。

このような :

if(scan.hasNextInt())
 p =scan.nextInt();
于 2013-04-17T15:22:40.733 に答える