我试图只允许整数输入并阻止我的程序在输入其他内容时中断。不知何故,我的代码创建了一个无限循环,并且不允许我输入新的输入。
private static int x;
public static void main(String[] args) {
testInput();
}
public static void testInput(){
while (true){
System.out.println("Please enter Integer:");
try{
setX(scanner.nextInt());
break;
}catch (InputMismatchException i){
System.out.println("Please use Integer");
}
}
}
public static void setX(int integer){
x = integer;
}
}
创建无限循环,其中显示:请输入整数:,请使用整数而不是让我进行新输入。
最佳答案
你走在正确的轨道上,有一个 while 循环,基本上,你只需要使用 Scanner.<b>next()</b>
当用户输入整数以外的内容时:
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String prompt = "Please enter an integer: ";
int userInteger = getIntegerInput(prompt, scanner);
System.out.printf("You entered: %d%n", userInteger);
}
private static int getIntegerInput(String prompt, Scanner scanner) {
System.out.print(prompt);
int validInteger = -1;
while (scanner.hasNext()) {
if (scanner.hasNextInt()) {
validInteger = scanner.nextInt();
break;
} else {
System.out.println("Error: Invalid input, try again...");
System.out.print(prompt);
scanner.next();
}
}
return validInteger;
}
}
用法示例:
Please enter an integer: a
Error: Invalid input, try again...
Please enter an integer: 😀
Error: Invalid input, try again...
Please enter an integer: 1.0
Error: Invalid input, try again...
Please enter an integer: 6
You entered: 6
关于java - 测试输入是否为整数时如何避免无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56687821/