Java .与其他布尔函数相等

Java .与其他布尔函数相等,java,string,boolean,Java,String,Boolean,在我的程序的一小部分中,我试图验证是否有人输入了m,m,F,F,在大多数情况下我都得到了它,但是当我把这些语句放在一起时,似乎有点不对劲。比如说, String _gender = "M"; if(!"m".equals(_gender.toLowerCase())||!"f".equals(_gender.toLowerCase())){ System.out.println("try again&q

在我的程序的一小部分中,我试图验证是否有人输入了m,m,F,F,在大多数情况下我都得到了它,但是当我把这些语句放在一起时,似乎有点不对劲。比如说,

   String _gender = "M";
   if(!"m".equals(_gender.toLowerCase())||!"f".equals(_gender.toLowerCase())){
      System.out.println("try again");
   }else 
      System.out.println("success");
它告诉我再试一次,但当我把它作为:

  String _gender = "M";
   if(!"m".equals(_gender.toLowerCase())){
      System.out.println("try again");
   }else 
      System.out.println("success");

它给了我成功。我不知道这是否与我如何使用or有关,但这是我所猜测的。我还认为,这可能与支票同时检查两种情况或其他情况有关。Idk我已经做了一段时间了,这让我很困惑。

这是一个逻辑错误。当两个相等的结果都为假时,应进入重试状态

String _gender = "M";
if(!"m".equals(_gender.toLowerCase()) && !"f".equals(_gender.toLowerCase())){
  System.out.println("try again");
}else 
  System.out.println("success");

这是逻辑上的错误。当两个相等的结果都为假时,应进入重试状态

String _gender = "M";
if(!"m".equals(_gender.toLowerCase()) && !"f".equals(_gender.toLowerCase())){
  System.out.println("try again");
}else 
  System.out.println("success");
让我们评估一下您的代码: 如果!没错!false=>iffalse | | true=>true

现在您了解了获得输出的原因,请重试

现在,让我们修复它: 照办

String _gender = "M";
if (!("m".equals(_gender.toLowerCase()) || "f".equals(_gender.toLowerCase()))) 
评估结果是 如果真| | f.equals_gender.toLowerCase=>!真=>假

这将为您提供预期的输出success

让我们评估一下您的代码: 如果!没错!false=>iffalse | | true=>true

现在您了解了获得输出的原因,请重试

现在,让我们修复它: 照办

String _gender = "M";
if (!("m".equals(_gender.toLowerCase()) || "f".equals(_gender.toLowerCase()))) 
评估结果是 如果真| | f.equals_gender.toLowerCase=>!真=>假


这将给你预期的结果,成功

是霹雳回答下面的推论:查阅德莫根定理。你想说的是如果不是A或B,那就是如果!A | | B。要删除括号,需要执行if!A&&!下面是霹雳回答的推论:查一下德莫根定理。你想说的是如果不是A或B,那就是如果!A | | B。要删除括号,需要执行if!A&&!B