如果在添加多个条件时块未执行

时间:2015-02-14 14:46:40

标签: java

我正在运行这个程序来查找数组中的偶数,但我不希望我的程序检查数组的索引1。所以我这样做了,

    int[] numbers = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14 };

    for (int i = 0; i < numbers.length; i++) {
        if ((i != 1)){
            if (numbers[i] % 2 == 0) {
                System.out.print(numbers[i] + " ");
            }
        }
    }

它给出了正确的输出,

4 6 8 10 12 14 

但如果我添加其他条件以跳过索引13

即,if ((i != 1) || (i != 3) )然后if块未执行,我得到以下输出,

2 4 6 8 10 12 14 

而不是6 8 10 12 14

为什么if块没有执行多个条件?

3 个答案:

答案 0 :(得分:3)

if ((i != 1) || (i != 3) )

这总是如此。

  • 如果i既不是1也不是3,则两个条件均为真。
  • 如果i为1,那么正确的条件为真。
  • 如果i为3,则左边条件为真。

也许你想要

if (!(i == 1 || i == 3))

相当于

if ((i != 1) && (i != 3))

De Morgan's Law

答案 1 :(得分:2)

您的病情必须为if ((i != 1) && (i != 3) )

答案 2 :(得分:0)

它应该正常工作,因为i变量不等于1或不等于3,对于所有数字都是如此。你的意思是写i != 1 && i != 3