Я только начинаю программировать и только на прошлой неделе начал изучать java в нашей школе. Я пытаюсь пропустить итерацию, используя оператор continue в цикле while в java, и, к сожалению, результат не такой, как я ожидал ...
Это мой код:
// Using while Loop
int counter = 1;
while(counter <= 5){
if (counter == 3){
continue;
}
System.out.println(counter);
counter++;
}
Результат: 1 2 и он не печатает 4 и 5, но я заметил, что программа все еще не завершена.
Я даже пробовал кодировать это так:
int counter = 1;
while(counter <= 5){
System.out.println(counter);
if (counter == 3){
continue;
}
counter++;
}
Он просто печатает 3 без остановки
int counter= 1;
while(counter <= 5){
counter++;
if (counter == 3){
continue;
}
System.out.println(counter);
}
этот печатает 2 4 5 6 вместо 1 2 4 5
Я использовал для этого цикл, и он хорошо работает
это мой код:
//using for loop
for(int counter = 1; counter <= 5; counter++){
if (counter == 3){
continue;
}
System.out.println(counter);
}
это печатает правильный вывод ...
Теперь, может ли кто-нибудь сказать мне, в чем моя ошибка при использовании цикла while при выполнении этого упражнения? Спасибо...




if (counter == 3){
continue;
}
System.out.println(counter);
counter++;
Здесь оператор continue пропускает оператор ctr++;, поэтому это всегда 3, и цикл while никогда не завершается.
int counter = 1;
while(counter <= 5){
System.out.println(counter);
if (counter == 3){
continue;
}
counter++;
}
Здесь будет достигнут оператор печати, как и до состояния continue, но counter++; все равно будет передан, что приведет к бесконечному циклу печати 3.
int counter= 1;
while(counter <= 5){
counter++;
if (counter == 3){
continue;
}
System.out.println(counter);
}
Здесь достигнут counter++, но он будет увеличен до println(), поэтому он распечатает один плюс желаемые значения.
так что я могу сделать, чтобы это исправить?
@robert Почему бы не использовать цикл for, который автоматически увеличивает i?
Я уже сделал это правильно в цикле for. На самом деле настоящая причина, по которой я делаю это упражнение, - это попытка создать программу, которая будет определять, является ли число простым или составным. Я сделал это правильно в цикле for, но мой учитель сказал, что это правильно, но это не самый простой метод .. Вот мой код: for (int ctr = 1; ctr <= n; ctr ++) {if (n% ctr == 0) {r ++; }} Он намекнул, что проще всего использовать continue в цикле while, поэтому я использовал if (num% ctr! = 0) {continue; } Это было явно неправильно ..
Просто добавьте counter ++ перед оператором continue, и код вашего цикла while будет работать так же, как и цикл for.
@robert Это, чтобы узнать, сколько делителей у данного числа?
@GBlodgett, теперь все в порядке, я уже решил эту задачу в цикле while. Я пробовал это как ступеньку в цикле while, потому что я просто хочу проверить, как работает оператор continue в цикле while, думаю, я понял, как делать то, что хочет мой учитель ...
Кстати, в первом ответе @GBlodgett вы знаете, почему ваша программа не показывает ожидаемый результат. Так можно добиться своего результата.
// Использование цикла while
int counter = 0;
while(counter < 5){
counter++;
if (counter == 3){
continue;
}
System.out.println(counter);
}
то, что я пытаюсь сделать, это пропустить число 3 и напечатать 1 2 4 5. Если я использую break, он просто напечатает 1 2 3
Проверьте еще раз, пожалуйста.
Пожалуйста, подумайте о редактировании вашего ответа, потому что ваше текстовое объяснение не соответствует вашему коду.
В любое время приятель :).
Проблема в том, что как только counter == 3, он всегда будет попадать в оператор if как истинный и больше никогда не будет увеличивать счетчик. Итак, ваш цикл while напечатает 1 2, а затем будет выполняться бесконечно.
Чтобы решить эту проблему, запишите ее так:
// Using while Loop
int counter = 1;
while(counter <= 5){
if (counter == 3){
counter++;
continue;
}
System.out.println(counter);
counter++;
}
Просто добавьте counter ++ перед оператором continue. Надеюсь это поможет.
Если вы там
continue, он не попадает вcounter++