我是新来的,但一直在积极使用网站资源。爱它。希望将来能够做出积极的贡献。
关于我的问题,我试图获得一个只有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的额外工作,以帮助提高我的技能
答案 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.isNumeric
或Apache Commons Lang。
您也可以拥有自己的数字功能
public static boolean isNumeric(String str)
{
try
{
int i = Integer.parseInt(str);
}
catch(NumberFormatException nfe)
{
return false;
}
return true;
}