不应该满足多部分循环条件

时间:2014-04-01 21:06:04

标签: java

下面的程序提前退出while循环。如果我取出||只留下一个选项退出循环,那么它可以正常工作。但是,我,但我不想要这个;我希望有多个条件可以摆脱循环,而不仅仅是一个。

public class password
{  
    public static void main (String args[])
    {
        new password ();  
    }

    public password ()
    {
        String guess = "";

        //while they haven't got the password yet
        while (!guess.equals ("Rain") || !guess.equals ("rain"))
        {
            guess = IBIO.inputString ("Enter the password: ");

            if (!guess.equals ("Rain") || !guess.equals ("rain"))
            {
                System.out.println ("Sorry please try again.");
            }

        }
        //if they are out of the loop, they got the password
        System.out.println ("Correct, please continue");
    }
}

3 个答案:

答案 0 :(得分:2)

将您的||更改为&&

if (!guess.equals ("Rain") || !guess.equals ("rain"))
如果true不等于“雨”或guess不等于“下雨”,则

guess。如果guess等于“Rain”,则它不等于“rain”,因此if语句在您希望true时评估为false

同样适合您的while条件。

String guess = "rain";
System.out.println(!guess.equals("Rain"));  // Outputs true
System.out.println(!guess.equals("rain"));  // Outputs false

因此,|| truefalse true,其结果将为{{1}}。

答案 1 :(得分:0)

你的情况现在永远是,因为双方不可能同时是假的。看起来您想要&&(和)代替||(或),以便猜测是正确的,如果它等于"Rain""rain"

这里真正的问题可能是你以一种比实际需要更难思考的方式组织代码。直观地,您想要做的是“循环直到用户输入"Rain""rain"”。因为你已经设置了所有的否定循环,所以很难阅读,因此难以编码。为了更容易理解发生了什么,我会使用看起来更像直观设计的结构:

while (true) { // loop "forever"
    guess = IBIO.inputString ("Enter the password: ");
    if (guess.equals("Rain") || guess.equals("rain")) {
        break; // They got the password right; break out of the loop.
    }
    // If we get here, they got the password wrong, so tell them and keep looping.
    System.out.println ("Sorry please try again.");
}
System.out.println ("Correct, please continue");

答案 2 :(得分:0)

当然||必须是&&

这是错误模式不是比较1或不比较2

!guess.equals ("Rain") || !guess.equals ("rain")

compare1或comparison2都是false,因此结果始终为true - 信息丢失。 因此,不考虑其含义,可能是&&