String groupType="local";
if(groupType==null ||groupType.equals("")||!groupType.equalsIgnoreCase("local")||!groupType.equalsIgnoreCase("global")||!groupType.equalsIgnoreCase("universal")){
System.out.print("evlauate to true ");
}为什么这段代码的计算结果为真,!groupType.equalsIgnoreCase("local")应该将其设置为假,
发布于 2016-10-18 14:49:36
即使您将条件减少到
if (!groupType.equalsIgnoreCase("local")||!groupType.equalsIgnoreCase("global"))这永远是正确的,因为groupType不能同时等于“本地”和“全局”。
您可能希望使用&& (AND)而不是|| (OR)。
if (groupType == null || groupType.equals("") ||
(!groupType.equalsIgnoreCase("local") && !groupType.equalsIgnoreCase("global") && !groupType.equalsIgnoreCase("universal"))) {
System.out.print("evaluate to true ");
}现在,如果groupType为null或空,或者不等于"local"/"global"/"universal“值之一,它将计算为true。我猜这就是你想要的。
发布于 2016-10-18 14:56:53
让我们看一下||运算符的每个操作数:
null?False。”?正确。
其中两个条件的计算结果为true。因此,整个if语句的计算结果为true。
发布于 2016-10-18 15:59:57
也许你想要这样:
if(groupType==null ||groupType.equals("")
||!(groupType.equalsIgnoreCase("local")
||groupType.equalsIgnoreCase("global")
||groupType.equalsIgnoreCase("universal")
)
)https://stackoverflow.com/questions/40101332
复制相似问题