Ошибка Java For-Loop - PullRequest
       2

Ошибка Java For-Loop

0 голосов
/ 20 ноября 2011

Я пытаюсь распечатать все нечетные числа, которые не кратны 7 или 9. Он работает, проверяя, равен ли остаток сначала 0, если делится на два, давая нечетные числа.

Но когда я поставил его, чтобы показать числа, если они не кратны 7, он просто отображает ВСЕ нечетные числа, я ошибся?

public class NoMultiples7and9 {

    public static void main(String[] args) {

        for (int i = 1; i <= 30; i++) {

            if (i % 2 != 0) {

                if (i % 7 != 0 || i % 9 != 0) {

                    System.out.println(i);
                }
            }
        }
    }
}

Ответы [ 4 ]

3 голосов
/ 20 ноября 2011

Измените свой код с помощью:

for (int i = 1; i <= 30; i = i + 2) {
   if (i % 7 != 0 && i % 9 != 0) {
      System.out.println(i);
   }
}

Обратите внимание на использование && (И) вместо || (ИЛИ) и бесполезного i % 2, потому что вы можете зацикливатьсятолько по нечетным числам, немного изменив цикл for.

2 голосов
/ 20 ноября 2011

Вы должны использовать AND вместо OR в своем сравнении.В сравнении i % 7 != 0 || i % 9 != 0, даже если i mod 7 равен 0, i mod 9 может не быть, и наоборот.

1 голос
/ 20 ноября 2011

ваше внутреннее выражение, если оно неверно, приведет к печати всех нечетных чисел, которые не делятся на 7 и 9. Бьюсь об заклад, если вы измените свой цикл на 63, он не напечатает 63. Начальная проверка% 2 также не нужна.

public class NoMultiples7and9 {

    public static void main(String[] args) {

        for (int i = 1; i <= 30; i++) {

            if (i % 7 != 0 && i % 9 != 0) {

                System.out.println(i);

            }
        }
    }
}
0 голосов
/ 20 ноября 2011
for (i = 1; i <= 30; i++) {  
        if (i % 2 != 0) {
            if(i % 7 != 0) {
                if(i % 9 != 0)
                    System.out.println(i);
            }

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