![](/img/trans.png)
[英]How can i make this code simpler? Also how can i check if input is an int?
[英]How can i make incorporate a 'int only' input in this loop?
我一直在弄乱这段代码大约一个小时,试图在用户输入字符而不是数字时使其循环播放
System.out.println("Enter level student last completed (0-3): ");
int level = in.nextInt();
while (level > 3 || level < 0){
System.out.println("Please enter a valid level!: ");
level = in.nextInt();
}
我想到了将!in.hasNextInt()
添加到while (level > 3 || level < 0)
中
while (!in.hasNextInt() || level > 3 || level < 0)
但这无济于事,因为如果输入了字符,程序仍然会崩溃。
编辑:
System.out.println("Enter level student last completed (0-3): ");
int level = 1; //in.nextInt();
while (in.hasNextInt()==false || level > 3 || level < 0){
in.next();
System.out.println("Please enter a valid level!: ");
}
level = in.nextInt();
您可以创建一个while循环来重复请求输入,直到获得喜欢的输入为止
int i;
while(scan.hasNextInt()==false){ //keep asking until it gets something it likes
scan.next(); //<--consume bad input, important!
System.out.println("Only integers are valid");
}
i=scan.nextInt();
System.out.println(i);
您可以将其打包为方法,当我们希望合并更多逻辑时,这将使工作更轻松
public static int getSafeInteger(){
Scanner scan=new Scanner(System.in); //if using scanner over and over consider passing the scanner as an argument
while(scan.hasNextInt()==false){
scan.next();
System.out.println("Only integers are valid");
}
return scan.nextInt();
}
然后我们可以在您现有的循环中使用该方法
System.out.println("Enter level");
Scanner scan=new Scanner(System.in);
int level=getSafeInteger();
while (level > 3 || level < 0){
System.out.println("Please enter a valid level!: ");
level = getSafeInteger();
}
使用nextLine()
并尝试使用Integer.parseInt(String)
其解析为整数。
您可以执行以下操作:
int level;
while (true) {
if (in.hasNextInt()) {
// now we know at least the input is a number
if (level > 3 || level < 0) {
// aww, it's an invalid number :(
in.nextLine(); // clear bad input
System.out.println("Please enter a valid level (0-3)!: ");
} else {
// hooray! store the input now
level = in.nextInt();
break; // out of the infinite loop
}
} else {
// input is not a number
in.nextLine(); // clear bad input
System.out.println("Please enter a number!: ");
}
}
尝试这个:
Scanner sc = new Scanner(System.in);
int level;
System.out.printf("Enter level student last completed (0-3): ");
while(true) {
try {
level = Integer.parseInt(sc.next());
if (level < 4 && level > -1) {
break;
}
} catch (Exception ex) { }
System.out.printf("Please enter a valid level!: ");
}
您可以将级别的默认值设置为大于3并执行以下操作
do
{
System.out.println("Enter level student last completed (0-3): ");
try{
level = in.nextInt();
}catch(InputMismatchException e){
System.out.println("Not a valid Number");
in.nextLine();
}
}while (level > 3 || level < 0);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.