Java 如何使用-1输入关闭while循环?

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

所以我需要制作一个程序,让用户猜测数字,直到他猜对为止。他需要能够用-1变量结束循环,但我不能用我目前的java知识来解决这个问题

这是我需要关闭的循环

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