gpt4 book ai didi

java - 接受输入时无休止的java循环

转载 作者:行者123 更新时间:2023-11-29 07:48:05 26 4
gpt4 key购买 nike

我这里有一个 while 循环的问题:

while((input = InputHandler.getInt()) != 1 && input != 2){
if(input == InputHandler.CODE_ERROR)
System.out.print("Input must be a number");
}

这个 while 循环只接收一次输入并且不会再次请求它,因此它会一直循环接受该输入一次。我在这里做错了什么,因为对我来说,这个 wile 循环的工作真的很奇怪?

输入处理器类:

public class InputHandler {
public static Scanner in = new Scanner(System.in);
public static int CODE_ERROR = -6;

public static int getInt(){
try{
return in.nextInt();
} catch(InputMismatchException e){
return CODE_ERROR;
}
}
}

最佳答案

目前,如果在命令行输入非整数,您的代码将进入无限循环。这是因为您的 in.nextInt() 方法抛出了异常,并且在扫描器中留下了有问题的值

您需要通过调用 in.next(); 使用导致异常的无效 token :

public static void main(String[] args) throws Exception {
int input;
while ((input = InputHandler.getInt()) != 1 && input != 2) {
if (input == InputHandler.CODE_ERROR)
System.out.print("Input must be a number");
}
}

public static class InputHandler {
public static Scanner in = new Scanner(System.in);
public static int CODE_ERROR = -6;

public static int getInt(){
try{
return in.nextInt();
} catch(InputMismatchException e){
in.next(); // <------------------ this should solve it
return CODE_ERROR;
}
}
}

关于java - 接受输入时无休止的java循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23695353/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com