так код сработал:
for(int i = start; start < end; start++){
if((start % multiple)==0) {
sum += start;
} else {
continue;
}
}//напишите тут ваш код
System.out.println(sum);
а так не сработал:
for (start < end; start++)
Хотя в первом варианте int i=start; ничего не решает. Может надо было поставить ";" перед первым start (; start < end ; start++) и если так , то как правильно расставлять ";" в условии?
linx
4 уровень
Приветствую! вопрос к условию
Решен
Комментарии (6)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
hidden #598481
16 января 2023, 21:48решение
В условии цикла for всегда должно быть три секции, отделенные точкой с запятой. По-другому не скомпилируется.
continue нужно использовать в тех случаях, когда надо пропустить и не доделывать оставшиеся в цикле команды. У тебя else continue не делает ничего, тк цикл после этого и так заканчивается, а бесполезный код надо удалять.
+2
linx
16 января 2023, 22:05
Спасибо vk, так понятнее.
А как работает это условие "for(true)" без 3х секций или такого условия не существует? только "while (true)" существует?
А "continue" , требует условие задачи
0
hidden #598481
17 января 2023, 08:17решение
Мы же с тобой это обсуждали тут https://javarush.com/help/87444. Обрати внимание, что ты всё равно должен ставить там точки с запятой до и после true, если пишешь цикл for.
Семантика записи цикла for заключается в следующем:
for (действие до цикла ; условие исполнения цикла ; действие после каждой итерации )
Действие до цикла - это команда, которая выполняется один раз, перед проверкой условия исполнения цикла. Тут может быть написана любая команда, обычно здесь объявляют и инициализируют дополнительную переменную, которая нужна только в рамках этого цикла:
Условие исполнения цикла проверяется перед началом каждой новой итерации. Здесь должна быть или операция сравнения, или логическая величина, или любой метод, возвращающий логическую величину, т.е. boolean. Перед каждой итерацией цикла будет выполняться эта команда, и если она истинна (т.е. если сравнение или метод вернуло true), то цикл исполнится ещё один раз, в противном случае прервётся. Если написать здесь просто true, то цикл сам по себе не прервётся никогда, пока внутри цикла не выполнить команду break.
Действие после каждой итерации - это дополнительное действие, как правило отвечающее за переход к следующему элементу. Чаще всего это инкремент переменной-счётчика. Ничего бы не изменилось, если бы вместо этой третьей секции в цикле for эта команда была бы записана последней в теле цикла. Но её выносят в верх цикла for, чтобы разделить логику работы тела цикла и логику перебора элементов в цикле. И вообще, эти три элемента цикла for унаследованы из других языков программирования, более старых - это в целом общепринятая запись цикла for.
+1
hidden #598481
17 января 2023, 08:22
Чтобы в использовании оператора continue был какой-то смысл, после него должны идти команды:
Вообще изменять значения параметров метода - не очень хорошая практика. Если у тебя переменная называется start и хранит в себе величину, с которой начинается перебор, то она и дальше должна её хранить. Иначе могут возникнуть вопросы: почему после цикла значение start и end одинаковое? Какое было значение start изначально? Конечно, в рамках одной отдельно взятой задачи это нестрашно и разницы не будет, но в целом стоит разграничивать эти вещи. Если нужно перебрать значения от start до end, то должны быть отдельно start, отдельно end, отдельно переменная, хранящая текущую величину.
+2
linx
19 января 2023, 20:13
Полезный комментарий, цикл for по полочкам разобран)
Спасибо за ссылку на комментарий, я заметил в чём был не внимателен.
0
linx
19 января 2023, 20:16
Точно!
Дошло =)
0