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

如果“退出”是您在运行程序时键入的第一件事,那么您将崩溃。这是因为第一次读入的输入是input.nextInt(). 如果您键入“exit”并input期望一个 int,它将引发InputMismatch异常。

要纠正这一点,input.next()如果你不知道你会得到什么,你可以使用。然后你可以对输入进行自己的解析。

于 2013-10-02T23:05:56.543 回答
2

您正在调用 nextInt 而不检查它是一个 int。您需要先检查 hasNextInt() 因为他们可能按照您的指示输入了“exit”。

于 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..)如果您引入“退出”,那么它将抛出该异常。

也许如果你改变你的提示和你的指示的位置?

    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 回答