Java 如何使用-1输入关闭while循环?
所以我需要制作一个程序,让用户猜测数字,直到他猜对为止。他需要能够用-1变量结束循环,但我不能用我目前的java知识来解决这个问题 这是我需要关闭的循环Java 如何使用-1输入关闭while循环?,java,while-loop,Java,While Loop,所以我需要制作一个程序,让用户猜测数字,直到他猜对为止。他需要能够用-1变量结束循环,但我不能用我目前的java知识来解决这个问题 这是我需要关闭的循环 random = generator.nextInt(435) + 456; System.out.println("Enter digit between 456 and 890 "); randomUser= scan.nextInt(); while (randomUser > 1 &a
random = generator.nextInt(435) + 456;
System.out.println("Enter digit between 456 and 890 ");
randomUser= scan.nextInt();
while (randomUser > 1 && randomUser < 456 || randomUser > 891 )
{
System.out.println("1Input must be between 456 and 890");
randomUser= scan.nextInt();
}
while (randomUser != random || randomUser!=-1 )
{
if (randomUser < random)
{
System.out.println("Your guess was lower than the random number please try again");
}
else
{
System.out.println("Your guess was higher than the random number please try again");
}
randomUser= scan.nextInt();
while (randomUser > 1 && randomUser < 456 || randomUser > 891 )
{
System.out.println(" 2Input must be between 456 and 890");
randomUser= scan.nextInt();
}
}
if (randomUser == random)
{
System.out.println("CONGRATULATIONS Your answer is correct!!");
}
else
{
System.out.println("you exited the program");`
我知道为什么我会得到它,因为我的答案比随机数低,但我不知道当你输入-1时,我需要做什么才能让它停止
有人能帮忙吗
if (randomUser == -1)
return;
这应该可以,或者它的一些变体。将其置于while循环的开始处。更改此条件:
while (randomUser != random || randomUser!=-1 )
使用&&
while (randomUser != random && randomUser!=-1 )
改变
while (randomUser != random || randomUser!=-1 )
到
原因:即使randomUser=-1,您定义random的方式也确保了-1==random永远不会为真。这样,while循环将永远不会以逻辑OR退出。相反,您需要逻辑AND。更改
while (randomUser != random || randomUser!=-1 )
(randomUser!=random | | randomUser!=-1)
到
(randomUser!=random&&randomUser!=-1)
您使用的是逻辑OR(|
),由于第一个条件(randomUser!=random)
仍然满足,因此它的计算结果始终为true。逻辑OR在评估为真的第一个条件后短路
相反,逻辑AND(&&&
)仅在满足所有条件时进行计算,包括
randomUser!=-1
更改
(randomUser!=random | | randomUser!=-1)
到
(randomUser!=random&&randomUser!=-1)
while
是在while(logic)
中的逻辑为true
时继续运行的语句
首先,关注你的逻辑:
(randomUser!=random | | randomUser!=-1)
true
|true
=true
true
|false
=true
false
|true
=true
false
|false
=false
只有一种情况会使逻辑返回错误:
(randomUser!=random | | randomUser!=-1)
=(randomUser==random&&randomUser=-1)
因此,while语句永远不会结束。正如其他人所提到的,当输入-1时循环不会中断的原因是
while
条件的错误
我还建议对代码进行一些清理,如下所示:
random = generator.nextInt(435) + 456;
System.out.println("Enter digit between 456 and 890");
while (True) {
randomUser = scan.nextInt();
if (randomUser == random) {
System.out.println("CONGRATULATIONS! Your answer is correct!!");
break;
} else if (randomUser == -1) {
System.out.println("you exited the program");
break;
} else {
if (randomUser < 456 || randomUser > 890) {
System.out.println("Input must be between 456 and 890");
} else if (randomUser < random) {
System.out.println("Your guess was lower than the random number. Please try again");
} else {
System.out.println("Your guess was higher than the random number. Please try again");
}
}
}
random=generator.nextInt(435)+456;
System.out.println(“输入介于456和890之间的数字”);
while(True){
randomUser=scan.nextInt();
if(randomUser==random){
System.out.println(“祝贺你!你的答案是正确的!!”;
打破
}else if(randomUser==-1){
System.out.println(“您退出了程序”);
打破
}否则{
if(随机用户<456 | |随机用户>890){
System.out.println(“输入必须介于456和890之间”);
}else if(随机用户<随机){
System.out.println(“您的猜测低于随机数,请重试”);
}否则{
System.out.println(“您的猜测高于随机数,请重试”);
}
}
}
这将在您在问题中指定消息时打印出消息,并在从用户处获取输入
-1
时正确停止循环。这也会在满足任何终止条件时将控制流返回到循环的末尾。您需要中断
循环您还需要更改您可能需要的第一个while循环:while(randomUser!=-1&&randomUser<456 | | randomUser>890)这实际上是正确的答案。如果不更改第二个while的条件,则有必要添加另一个if,以测试相同的内容(即用户已给出停止条件)。
random = generator.nextInt(435) + 456;
System.out.println("Enter digit between 456 and 890");
while (True) {
randomUser = scan.nextInt();
if (randomUser == random) {
System.out.println("CONGRATULATIONS! Your answer is correct!!");
break;
} else if (randomUser == -1) {
System.out.println("you exited the program");
break;
} else {
if (randomUser < 456 || randomUser > 890) {
System.out.println("Input must be between 456 and 890");
} else if (randomUser < random) {
System.out.println("Your guess was lower than the random number. Please try again");
} else {
System.out.println("Your guess was higher than the random number. Please try again");
}
}
}