gpt4 book ai didi

java - 如果扫描器接收到除 int 之外的其他内容,则会创建无限循环

转载 作者:行者123 更新时间:2023-11-30 05:56:59 27 4
gpt4 key购买 nike

在此 java 方法中,重点是扫描仪接收最小值和最大值之间的 int。如果接收到超出这些范围的int,则程序会正确输出“无效输入”。但是,如果输入诸如“g”或“h”之类的内容或除 int 之外的内容,则会创建无限循环。

我尝试在代码中的多个位置重新初始化 Scanner,但看起来当从 System.in 输入除 int 之外的其他内容时,它会再次飞过 Scanner 并保持循环继续。任何想法

public static int promptInt(int min, int max) {
while (false != true) {
int b = 0;
Scanner scnr = new Scanner(System.in);
System.out.print("Choose a value between " + min + " and " + max + ": ");
if (scnr.hasNext()) {
if (scnr.hasNextInt()) {
b = scnr.nextInt();
if (b <= max) {
return b;
} else {
System.out.println("Invalid Value");
}
}
else if (scnr.hasNextInt() == false) {
System.out.println("Not an Int");

}
}
}
}

最佳答案

根据上面的一些评论,需要一个 scnr.next(),否则它将继续检查已初始化的第一个扫描仪。这是修改后的代码,现在可以运行了。

public static int promptInt(int min, int max) {
Scanner scnr = new Scanner(System.in);
while (false != true) {
int b = 0;
System.out.print("Choose a number between " + min + " and " + max + ": ");
if (scnr.hasNext()) {
if (scnr.hasNextInt() == false) {
System.out.println("Invalid value.");
//the scnr.next was needed here
scnr.next();
}
else {
b = scnr.nextInt();
if (b <= max) {
return b;
} else {
System.out.println("Invalid value.");
}
}
}
}
}

关于java - 如果扫描器接收到除 int 之外的其他内容,则会创建无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52994852/

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