логическое ИЛИ и оператор модуля ведут себя странно в Java - PullRequest
0 голосов
/ 24 февраля 2010

Я пытаюсь построить массив простых чисел в Java.

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

Но моя программа, похоже, игнорирует условие и просто добавляет каждое число в мой список. Но если я просто использую одно условие, например,

if(c % 2 != 0)

Код отлично работает, игнорируя любое число, кратное 2. Чего мне здесь не хватает?

Ответы [ 2 ]

2 голосов
/ 24 февраля 2010

Вам нужно использовать логические и (&&) вместо или (||), так как вы хотите, чтобы все условия выполнялись перед добавлением.

При использовании логического или каждое условие оценивается слева направо, пока не будет найдено один , который соответствует.

1 голос
/ 24 февраля 2010

Ваше состояние сейчас оценивается как истинное, если число не делится ни на одно из (2,3,5).Это верно для всех чисел, кроме кратных (всем) 2, 3 и 5. Попробуйте логическое и (&&) вместо логического или (||).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...