java - 如何循环询问一个数字是否是整数?

标签 java if-statement while-loop int user-input

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。我已经尝试了很多事情。每次我输入字母或字母数字组合(例如 Q23k2k 等)时,都会收到不匹配错误。我希望能够检查用户是否在我的方法中输入了他不应该输入的内容。

最佳答案

逻辑很简单,如果你使用 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/

相关文章:

java - Play Framework 2.2 如何设置响应覆盖调用操作中的状态代码

java - 在 NetBeans 中永久包含外部 jar

java - 我的线程恰好循环了 43 次然后抛出异常

MySQL SET IF 语句

JavaScript if-else 解释

Java反弹物理: never ending bounce

javascript - 使用 ID 从 Google 表格中查找正确的值 - 避免多个 "else if" block - 构建数组

jQuery 动画切换到精确高度

loops - For 和 While 循环 : differences, 问题及原因

javascript - 同时在循环中运行函数