验证输入,不能包含字符串

时间:2013-12-24 17:05:46

标签: java

我是新来的,但一直在积极使用网站资源。爱它。希望将来能够做出积极的贡献。

关于我的问题,我试图获得一个只有1或2或3的有效输入

    choice = stdin.nextInt();
            stdin.nextLine(); // Recalling scanner so it removes the empty string in       printUserName()
            while (!((choice == 1) || (choice == 2)|| (choice == 3))){
                System.out.println("Please enter a valid input");
                choice = stdin.nextInt();
        }
            while(!stdin.hasNextInt()){
                System.out.println("Please enter a valid input");
                choice = stdin.nextInt();
            }
            return choice;
   }

这就是我所拥有但没有运气不允许输入为字符串:/

非常感谢任何帮助,这是关于java的额外工作,以帮助提高我的技能

2 个答案:

答案 0 :(得分:0)

尝试将String解析为int,然后捕获任何意味着它不是数字的异常。然后检查它是否等于1,2或3,如下所示:

boolean isInt = false;
choice = stdin.nextInt();
while (isInt == false){
int parsed = 0;
try{
   parsed = Integer.parseInt(choice);
}
catch (NumberFormatException nfe){
    System.out.println("Please enter a valid input");
    choice = stdin.nextInt();
}
if (parsed != 0){
    isInt = true;   
}
if (choice != 1 && choice != 2 && choice && != 3){
    System.out.println("Please enter a valid input");
    choice = stdin.nextInt();
}
}

答案 1 :(得分:0)

你可以去下面查看输入是否为数字

来自NumberUtils.isNumber

StringUtils.isNumericApache Commons Lang

您也可以拥有自己的数字功能

 public static boolean isNumeric(String str)  
    {  
      try  
      {  
        int i = Integer.parseInt(str);  
      }  
      catch(NumberFormatException nfe)  
      {  
        return false;  
      }  
      return true;  
    }