我试图只允许输入整数,并在输入其他内容时阻止程序中断。我的代码以某种方式创建了一个无限循环,并且不允许我输入新的输入。
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;
}
}
创建一个无限循环,该循环显示:请输入Integer:,请使用Integer而不是让我输入新内容。
答案 0 :(得分:2)
通过while循环,您处在正确的轨道上,基本上,您只需要在用户输入非整数的内容时使用scanner.next()
:
import java.util.Scanner;
class Main {
public static void main(String[] args) {
int userInteger = getIntegerInput();
System.out.println("You entered: " + userInteger);
}
private static int getIntegerInput() {
Scanner scanner = new Scanner(System.in);
String prompt = "Please enter an integer: ";
int validInteger = -1;
System.out.print(prompt);
while (scanner.hasNext()) {
if (scanner.hasNextInt()) {
validInteger = scanner.nextInt();
scanner.close();
break;
} else {
System.out.println("Error: Invalid input");
System.out.print(prompt);
scanner.next();
}
}
return validInteger;
}
}
用法示例:
Please enter an integer: a
Error: Invalid input
Please enter an integer: ?
Error: Invalid input
Please enter an integer: 1.0
Error: Invalid input.
Please enter an integer: 6
You entered: 6