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,
答案 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
?假。其中两个条件评估为真。因此,整个if语句的计算结果为true。
答案 2 :(得分:0)
也许你想要这个:
if(groupType==null ||groupType.equals("")
||!(groupType.equalsIgnoreCase("local")
||groupType.equalsIgnoreCase("global")
||groupType.equalsIgnoreCase("universal")
)
)