0

私は例外を止めようとしていますが、その方法がわかりません。やってみましたparseIntjava.util.NormalExceptionMismatch等。

誰かがこの問題を解決する方法について何か洞察を持っていますか?コピーアンドペーストのため、フォーマットは少しずれています。

do
{
   System.out.print(
           "How many integers shall we compare? (Enter a positive integer):");
   select = intFind.nextInt();
   if (!intFind.hasNextInt()) 
       intFind.next();
       {
           // Display the following text in the event of an invalid input
           System.out.println("Invalid input!");
       }
}while(select < 0)

私が試した他の方法:

 do
    {
       System.out.print(
                   "How many integers shall we compare? (Enter a positive integer):");
       select = intFind.nextInt();
       {
            try{
                   select = intFind.nextInt();
               }catch (java.util.InputMismatchException e)
            {
               // Display the following text in the event of an invalid input
               System.out.println("Invalid input!");
               return;
            }
       }
    }while(select < 0)
4

3 に答える 3

2

整数を取得するまですべてをスキップしたいようです。このコードは、整数以外の入力をスキップします。

利用可能な整数がない限り (while (!in.hasNextInt())) 利用可能な入力 (in.next) を破棄します。整数が利用可能な場合 - それを読み取ります (int num = in.nextInt();)

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (!in.hasNextInt()) {
            in.next();
        }
        int num = in.nextInt();
        System.out.println("Thank you for choosing " + num + " today.");
    }
}
于 2012-11-13T04:34:48.223 に答える
1

例外をキャッチする方法の簡単なサンプル:

int exceptionSample()
{
    int num = 0;
    boolean done = false;
    while(!done)
    {
        // prompt for input
        // inputStr = read input
        try {
            num = Integer.parseInt(inputStr);
            done = true;
        }
        catch(NumberFormatException ex) {
            // Error msg
        }
    }
    return num;
}
于 2012-11-13T04:10:57.483 に答える
0

IMO、ベストプラクティスはnextLine()、文字列入力parseIntを取得してから整数を取得することです。解析できない場合は、ユーザーに文句を言って再入力を要求してください。

nextLine()バッファをクリアするために、少し時間がかかる場合があることに注意してください(入力を破棄します)。

于 2012-11-13T04:05:15.453 に答える