键入“exit”后获取java.util.InputMismatch

时间:2013-10-02 23:02:46

标签: java string integer

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 个答案:

答案 0 :(得分:2)

如果您在运行程序时首先输入“exit”,那么您将崩溃。这是因为输入的第一次读入是input.nextInt()。如果键入“exit”并且input需要int,则会抛出InputMismatch异常。

要纠正此问题,如果您不知道自己会得到什么,可以使用input.next()。然后你可以在输入上做自己的解析。

答案 1 :(得分:2)

您正在调用nextInt而不检查它是否为int。您需要首先检查hasNextInt(),因为他们可能已按照您的指示键入“exit”。

答案 2 :(得分:1)

我的猜测是你在print语句后立即输入“exit”,因此它被

捕获
     searchkey= input.nextInt();

如果nextInt()传递给非int,则会导致异常。

答案 3 :(得分: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”,你将获得该异常,只是尝试进行数学“退出”+5。