Java评估IF语句

时间:2016-10-18 06:47:05

标签: java if-statement

String groupType="local";

        if(groupType==null ||groupType.equals("")||!groupType.equalsIgnoreCase("local")||!groupType.equalsIgnoreCase("global")||!groupType.equalsIgnoreCase("universal")){
              System.out.print("evlauate to true ");

        }

为什么此代码评估为true,!groupType.equalsIgnoreCase(" local")应将其设置为false,

3 个答案:

答案 0 :(得分:4)

即使你将条件减少到

if (!groupType.equalsIgnoreCase("local")||!groupType.equalsIgnoreCase("global"))

永远都是如此,因为groupType不能同时等同于“本地”和“全局”。

您可能希望使用&&(AND)代替||(或)。

if (groupType == null || groupType.equals("") ||
    (!groupType.equalsIgnoreCase("local") && !groupType.equalsIgnoreCase("global") && !groupType.equalsIgnoreCase("universal"))) {
    System.out.print("evaluate to true ");
}

现在,如果true为空或空或不等于其中一个值“local”/“global”/“universal”,它将评估为groupType。我假设那就是你想要的。

答案 1 :(得分:0)

让我们看一下||运算符的每个操作数:

  • 字符串是否等于null?假。
  • 字符串是空的?假。
  • 字符串不等于" local"?假。
  • 字符串不等于"全局"?真。
  • 字符串不等于"通用"?真。

其中两个条件评估为真。因此,整个if语句的计算结果为true。

答案 2 :(得分:0)

也许你想要这个:

if(groupType==null ||groupType.equals("")
   ||!(groupType.equalsIgnoreCase("local")
       ||groupType.equalsIgnoreCase("global")
       ||groupType.equalsIgnoreCase("universal")
      )
  )