-2

请看一下这段代码并解释这里发生了什么。当我使用布尔值 || 运算符它给了我一个无限循环,但是当我使用 && 运算符时它似乎很好。怎么来的?我也加入了一些调试行。如果我将它重写为一个 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

4

1 回答 1

1

也可以应用德摩根定律,将你的工作&&变成工作||。这个

userStatus != 1 && userStatus != 2

逻辑上等价于

!(userStatus == 1 || userStatus == 2)
于 2020-04-27T03:43:57.680 回答