Java,如何使用多字符布尔表达式关闭do-while循环?

Java, How to close do-while loop using multiple character boolean expressions?

这是一个相当新手的问题,但我想知道为什么我的 do...while 循环没有关闭。

程序应该在用户输入不是 'C'、'c'、'F' 或 'f' 时循环。 当 while 部分中只有一个布尔表达式有效时它似乎会关闭,但如果多个有效则不会关闭。

  public class CelsToFaren
  {
      public static void main(String[] args)
      {
          // scanner setup

          Scanner sc = new Scanner(System.in);
          // Variable declarations
          int celsius;
          int answerC;
          int farenheit;
          int answerF;
          char userLetter;
          do
          {
          // initial menu options
          System.out.println("Which temperature would you like to convert from? ");
          System.out.println(" >(C)elsius ");
          System.out.println(" >(F)arenheit ");
  
          // user input of C, c, F, or f to select option
          userLetter = sc.next().charAt(0);
  
          // if user input C or c
          if ((userLetter ==  'C' || userLetter == 'c'))
          {
              System.out.print("Please enter the temperature: ");
              celsius = sc.nextInt();
              answerC = ((celsius*9/5)+32);
              System.out.println("The answer is: " + answerC + " Farenheit ");
          }
          else
          {
  
              // if user input F or f
             if ((userLetter == 'F' || userLetter == 'f'))
              {
                  System.out.print("Please enter the temperature: ");
                  farenheit = sc.nextInt();
                  answerF = ((farenheit-32)*5/9);
                  System.out.println("The answer is: " + answerF + " Celsius ");
             }
              else
              {
                  // if user input not F, f, C, or c
                 if ((userLetter != 'F' || userLetter != 'f' || userLetter != 'C' || userLetter != 'c'));
                  {
                      System.out.println("Please enter a valid option");
                  }
              }
         }
 
         } while ((userLetter != 'c') || (userLetter != 'C') || (userLetter != 'f') || (userLetter != 'F'));
  
      }
  }

您需要更改退出逻辑。

在你的情况下 1 | 0 | 0 = true 所以循环继续。 您需要将其更改为:

while ((userLetter != 'c') && (userLetter != 'C') && (userLetter != 'f') && (userLetter != 'F'));

你的条件不对。让我们假设你想在 if 语句中打破循环。看起来像

if(userLetter == 'c' || userLetter == 'C' || userLetter == 'f' || userLetter == 'F')

现在让我们应用否定来获得不需要退出循环的条件

if(!(userLetter == 'c' || userLetter == 'C' || userLetter == 'f' || userLetter == 'F'))

这个条件类似于

if(userLetter != 'c' && userLetter != 'C' && userLetter != 'f' && userLetter != 'F')