#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 является положительным числом