что означает x % 2> 0 в Java?

#java #loops #break #continue

#java #циклы #перерыв #продолжить

Вопрос:

В настоящее время я изучаю Java на своих онлайн-курсах и изучаю циклы (в частности, операторы continue и break). Приведенный мне пример был:

 int j = 0
while (true){
    System.out.println();
    j  ;
    System.out.print(j);
    if (j%2 > 0) continue
    System.out.print(" is divisible by 2");
    if (j >= 10) break;
}
 

Я не понимаю, почему это (j%2> 0), а не (j%2 == 0), потому что что, если ‘j’ равно 5, например, и вы делаете 5%2. Разве полученное число не будет равно 1? Или я что-то упускаю? Может кто-нибудь, пожалуйста, объяснить мне это?
(извините, я не в том, что мой вопрос немного сбивает с толку. Я никогда раньше не пользовался этим сайтом, и я довольно молод)

Комментарии:

1. Разве полученное вами число не будет равно 1 — да. Итак, значение больше 0, и вы продолжаете. То есть вы не хотите отображать сообщение «… делится на 2», потому что 5 не является.

2. Отсутствует ; после continue .

3. Добро пожаловать в StackOverflow. Я настоятельно рекомендую вам научиться использовать ваш IDE-отладчик, чтобы вы могли пошагово просматривать код по одной строке за раз и проверять переменные. Это самый быстрый, простой и универсальный способ понять, что делают программы.

4. ах, хорошо, я начинаю понимать, спасибо всем <3

Ответ №1:

Позвольте мне объяснить вам. Смотрите Комментарии рядом с каждой строкой.

 int j = 0          
while (true){
    System.out.println();
    j  ;                   //increases the value of j on the next line by 1.
    System.out.print(j);   //prints 1, the first time because of above, 0   1.
    if (j%2 > 0) continue  //using modulus operator(%) we are doing 1 % 2, answer is 1
                           //since 1 % 2(if 1 is divisible by 2) > 0 we are 
                           //continue statement breaks the iteration in the 
                           //loop, so anything below this line won't be 
                           //executed.
    System.out.print(" is divisible by 2");//this line will only be executed
                                           //if j is divisible by 2. that is 
                                           //j is divisible by 2 (j%2 == 0)
    if (j >= 10) break;                    //when j is equal or greater than 
                                           //0 we are stopping the while loop.
}
 

Ответ №2:

Продолжить означает «перейти к началу цикла, пропуская остальную часть кода цикла», а не «продолжить код». Итак, поскольку 5%2 равно 1, а 1> 0, continue будет выполняться, переходя непосредственно к началу цикла и пропуская остальную часть тела.

Почему они используют > 0 вместо != 0? Нет никакой технической причины, это разница в стиле. Я лично использовал бы последнее как более понятное, на мой взгляд. Но либо работает.

Ответ №3:

 int j = 0;
while (true){
    System.out.println();
    j  ;
    System.out.print(j);
// in this case you won't print any message and you  
// are sure that the next number is even (j will be incremented by "continue;").
    if (j%2 > 0) continue; 
    System.out.print(" is divisible by 2");
    if (j >= 10) break;
}
 

Ответ №4:

X % 2 означает остаток, когда x делится на 2. Итак, если остаток от x / 2 больше 0, это означает, что x является нечетным числом. Когда x%2 == 0, тогда x является положительным числом