如果带有String.equals()的语句

时间:2012-01-11 18:06:56

标签: java if-statement logic

if ((clearance.equals("")) || (!clearance.equals("0")) || (!clearance.equals("1"))){
  System.out.println("Invalid entry, exiting.\n");
  System.exit(0);
}

但是,当我输入0或1时,它仍会打印“无效输入,退出。”

知道出了什么问题吗?

4 个答案:

答案 0 :(得分:12)

条件应为:

if (!clearance.equals("0") && !clearance.equals("1")) {

您当前的表达式始终评估为true(因为任何字符串不等于“0”或“1”)。

答案 1 :(得分:1)

你的逻辑错了。

if ((clearance.equals("")) || ((!clearance.equals("0")) && (!clearance.equals("1")))){

答案 2 :(得分:0)

考虑一下:如果clearance != "0"clearance != "1",您将打印错误消息。其中一个或另一个永远都是真的。

答案 3 :(得分:0)

如果间隙为“1”,那么它不是“0”,所以你会在那里短路并且值为真。如果许可是0,那么它不是1,所以你的陈述也是如此。