【问题标题】:logical OR and modulus operator behaving oddly in Java逻辑或和模运算符在 Java 中的行为异常
【发布时间】:2010-02-24 15:53:08
【问题描述】:

我正在尝试用 Java 构建一个素数数组。

if(c % 2 != 0 || c % 3 != 0 || c % 5 != 0) {
     n.add(c);
}

但我的程序似乎忽略了这个条件,只是将每个数字都添加到我的列表中。 但是如果我只使用一个条件,例如,

if(c % 2 != 0)

代码可以完美地忽略任何 2 的倍数。我在这里遗漏了什么?

【问题讨论】:

    标签: java arrays conditional-statements


    【解决方案1】:

    您需要使用逻辑与 (&&) 而不是 or(||),因为您希望在添加之前所有条件都为真。

    使用逻辑或,从左到右评估每个条件,直到找到匹配的一个

    【讨论】:

      【解决方案2】:

      如果数字不能被 (2,3,5) 中的任何一个整除,则您的条件现在评估为 true。这适用于除(所有)2、3 和 5 的倍数之外的所有数字。尝试逻辑与 (&&) 而不是逻辑或 (||)。

      【讨论】:

        猜你喜欢
        • 2010-10-18
        • 2010-12-08
        • 2014-01-01
        • 2019-08-03
        • 2014-12-10
        • 2012-12-19
        • 2011-08-25
        • 1970-01-01
        相关资源
        最近更新 更多