0
Scanner input = new Scanner (System.in);

    System.out.println("Enter -1 to exit the program");
    System.out.println("Enter the search key: ");

    int searchkey = input.nextInt();
    String exit = input.nextLine();

    while (!exit.equals("exit"))
    {

        linear(array, searchkey);
        binary(array,searchkey);

        System.out.println();
        System.out.println("Enter exit to end the program");
        System.out.println("Enter the search key: ");

        searchkey = input.nextInt();
        exit = input.nextLine();

    }

InputMismatch 例外が発生しています。私はこれが原因であることを知っていsearchkeyます。文字列を使用してプログラムを終了するにはどうすればよいですか?

4

4 に答える 4

2

プログラムを実行するときに最初に「exit」と入力すると、クラッシュします。これは、入力の最初の読み込みが であるためですinput.nextInt()。「exit」と入力inputして int を期待すると、InputMismatch例外がスローされます。

これを修正するには、input.next()何が得られるかわからない場合に使用できます。次に、入力に対して独自の解析を行うことができます。

于 2013-10-02T23:05:56.543 に答える
2

int であることを確認せずに nextInt を呼び出しています。指示どおりに「exit」と入力した可能性があるため、最初に hasNextInt() を確認する必要があります。

于 2013-10-02T23:07:06.850 に答える
1

私の推測では、print ステートメントの直後に「exit」と入力すると、

     searchkey= input.nextInt();

渡されなかった場合、例外が発生しますnextInt()int

于 2013-10-02T23:06:02.560 に答える
1

input.nextInt()整数(-1、0、1、2など)を入力する必要があります。「exit」を導入すると、その例外がスローされます。

プロンプトと指示の位置を変更した場合はどうでしょうか。

    System.out.println("Enter -1 to exit the program");
    int searchkey= input.nextInt(); // Only integers are allowed 

    System.out.println("Enter the search key: ");
    String exit = input.nextLine(); //Introduce any string, like exit or apples.

System.out.println は、あなたが何をしようとしているのかを知りません。それはあなたにとって意味のあることであり、プログラム自体にとって意味のあることではありません。

This is your current output: 
Enter -1 to exit the program
Enter the search key: 
<here you should type an integer and enter>
<here you should type a String>

整数はまったく必要ないようですが、適切な出力は次のようになります。

Enter -1 to exit the program
<here you should type an integer and enter>
Enter the search key: 
<here you should type a String>

nextInt または nextLine を呼び出した後、何かを入力するまで、コンソールは印刷を停止します。nextInt が呼び出されたときに「exit」と入力すると、その例外が発生します。「exit」+5 の計算を実行してみてください。

于 2013-10-02T23:06:04.337 に答える