如何循环询问数字是否为整数


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");
} 

我无法弄清楚如何在 int 不是 int 的情况下连续循环请求 int x。我尝试了很多东西。每次我输入字母或字母数字组合时,例如Q23k2k等。我收到不匹配错误。我希望能够检查用户是否在我的方法中输入了他不应该输入的内容。

如果您使用 Scanner 类的 nextInt() 方法来读取输入(如 23k,这是一个字符串值),逻辑很简单,它将抛出输入不匹配异常,因为它需要一个整数值,但您正在输入一个字符串值。

因此,您需要使用 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;
        }
    }
while(input.hasNext()) {
 if(input.hasNextInt()) {
    x = input.nextInt();
    if(x <= 0 || x > 3) {
     // throw exception or whatever your requirements is.
    }
    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");
    } 
 }


}

我希望能够检查用户是否正在输入他的东西 不应该在我的方法中。

   int x = 0;
   while(x <=0 || x > 3){
   try {
         System.out.println("Choose a correct gear number: ");
         x = input.nextInt();
        } catch (InputMismatchException ex) {
        System.out.println("Invalid input");
        input.nextLine();//the scanner can freely read the next
        }
    } 

仅接受123 的输入值。如果您输入除数字以外的任何内容,例如 24k ,则此代码将引发异常java.util.InputMismatchException并再次询问输入。

    String str = "1 2 3 4 str";
    Scanner input = new Scanner(str);
    while(input.hasNext()){
        if(input.hasNextInt()){
            int 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");
                    break;
                default : System.out.println("Number out of range");
            } 
        }
        else {
            System.out.println("Input not a integer::" + input.next());
        }
    }

工作解决方案:

import java.util.Scanner;

公共类 AskGear {

public static void main(String[] args) {
    int choose = 0;
    Scanner sc = new Scanner(System.in);
    for (;;) {
        System.out.println("Enter your choice: ");
        if (!sc.hasNextInt()) {
            System.out.println("only integers!: ");
            sc.next(); // discard
            continue;
        }
        choose = sc.nextInt();
        if (choose <= 0 || choose > 3) {
            System.out.println("Choose a correct gear number");
            continue;
        }
        boolean choiceMade = false;
        switch (choose) {
        case 1:
            System.out.println("You're in Gear 1");
            choiceMade = true;
            break;
        case 2:
            System.out.println("Gear 2");
            choiceMade = true;
            break;
        case 3:
            System.out.println("Gear3");
            choiceMade = true;
        }
        if (choiceMade) {
            break;
        }
    }
}

}

注意:如果您希望它无休止地运行,即使用户输入了正确的档位,您可以注释此代码:

if (choiceMade) {
        break;
    }

相关内容

  • 没有找到相关文章

最新更新