逻辑OR和模运算符在Java中表现奇怪

时间:2010-02-24 15:53:08

标签: java arrays conditional-statements

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

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

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

if(c % 2 != 0)

代码可以完美地忽略任何数字,这是2的倍数。我在这里缺少什么?

2 个答案:

答案 0 :(得分:2)

您需要使用逻辑和(&&)代替或(||),因为您希望在添加之前所有条件都为真。

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

答案 1 :(得分:1)

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