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
。如何使用字符串退出程序?
答案 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。