gpt4 book ai didi

java - do while 循环和用户输入问题

转载 作者:行者123 更新时间:2023-12-02 08:49:35 25 4
gpt4 key购买 nike

我正在尝试编写一个程序,用户需要输入一个随机整数。如果用户输入一个字符串,我希望弹出一条错误消息:“这不是数字”,然后重新启动程序,直到用户输入数字。到目前为止我已经明白了,但我被困住了。如果我输入一个字符串并且程序崩溃,我只会收到一条错误消息。

public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int number = 0;


do {
System.out.println("Input a number!");
number = scanner.nextInt();
if (!scanner.hasNextInt()) {
System.err.println("This is not a number");
}

} while (!scanner.hasNextInt());

System.out.println("You entered: " + number);

}

最佳答案

您收到一个InputMisMatchException,因为如果您将一个字符串输入到scanner.nextInt()中,它会立即给出错误并在执行其他操作之前停止程序,因此它不会'达不到你的 if 语句。解决此问题的一种方法是改为以字符串形式接收用户输入,尝试将其解析为 int,如果不引发异常则结束循环。这是我的实现:

public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String input = "";
int number = 0;
boolean end = true;


do {
System.out.println("Input a number!");
input = scanner.nextLine();
try {
number = Integer.parseInt(input);
end = true;
} catch(Exception e) {
System.err.println("This is not a number");
end = false;
}

} while (!end);

System.out.println("You entered: " + number);

}

关于java - do while 循环和用户输入问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60873818/

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