请看一下这段代码并解释这里发生了什么。当我使用布尔值 || 运算符它给了我一个无限循环,但是当我使用 && 运算符时它似乎很好。怎么来的?我也加入了一些调试行。如果我将它重写为一个 do-while 循环,同样的事情。因此,当我将:while (userStatus != 1 || userStatus != 2) 替换为:while (userStatus != 1 && userStatus != 2) 时,这很好。谢谢各位!
import java.util.Scanner;
public class Example
{
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
int userStatus = 0;
String maritalStatus = "";
System.out.println("userStatus variable value outside the loop: " + userStatus); //debug
while (userStatus != 1 || userStatus != 2)
{
System.out.println("userStatus variable value inside the loop: " + userStatus); //debug
System.out.println("Enter status: ");
maritalStatus = in.next().toUpperCase();
if (maritalStatus.equals("SINGLE"))
{
userStatus = 1;
System.out.println("after SINGLE userStatus is assigned value: " + userStatus); //debug
}
else if (maritalStatus.equals("MARRIED"))
{
userStatus = 2;
System.out.println("after MARRIED userStatus is assigned value: " + userStatus); //debug
}
System.out.println("userStatus value inside the loop after IF: " + userStatus); //debug
} //end while
System.out.println("Value of entered String is " + userStatus);
} //end main
} //end class