下面的程序提前退出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");
}
}
答案 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
因此,||
true
和false
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 - 信息丢失。
因此,不考虑其含义,可能是&&
。