x = input.nextInt();
while (!input.hasNextInt(x)) {
System.out.println("Enter a valid int");
x = input.nextInt();
}
while (x <=0 || x > 3) {
System.out.println("Choose a correct gear number: ");
x = input.nextInt();
}
switch(x) {
case 1:
System.out.println("You're in Gear 1");
break;
case 2:
System.out.println("Gear 2");
break;
case 3:
System.out.println("Gear3");
}
我不知道如何在 x
不是 int 时连续循环请求 int。我已经尝试了很多事情。每次我输入字母或字母数字组合(例如 Q
或 23k
或 2k
等)时,都会收到不匹配错误。我希望能够检查用户是否在我的方法中输入了他不应该输入的内容。
最佳答案
逻辑很简单,如果你使用 Scanner 类的 nextInt() 方法来读取像 23k 这样的字符串值,它会抛出一个 inputmismatch 异常,因为它需要一个 Integer 值,但你输入的是一个 String 值.
因此,您需要使用 next() 方法将输入读取为字符串,然后验证它是否为有效的整数值。
public static void main(String[] args){
System.out.println("Entered inside the program....");
Scanner console=new Scanner(System.in);
System.out.println("Enter an input...");
String s=console.next();
if(null==s || !isInt(s)){
System.out.println("Entered input is not a valid integer:"+s);
}
System.out.println("Entered input is a valid integer");
}
private static boolean isInt(String arg){
try{
Integer.parseInt(arg);
return true;
}catch(NumberFormatException nfe){
return false;
}
}
关于java - 如何循环询问一个数字是否是整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35029367/