gpt4 book ai didi

java - 我怎样才能在这个循环中合并 'int only' 输入?

转载 作者:行者123 更新时间:2023-12-01 13:45:56 25 4
gpt4 key购买 nike

我已经对这段代码进行了大约一个小时的研究,现在尝试在用户输入字符而不是数字时使其循环

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

关于java - 我怎样才能在这个循环中合并 'int only' 输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20377045/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com