Цикл For

Java Syntax
4 уровень , 11 лекция
Открыта

Фрагмент лекции JavaRush - университета.


— Хочу рассказать тебе ещё об одном цикле. Этот цикл называется for. Это ещё одна запись цикла while, просто более компактная и удобная [для программистов]. Примеры:

while
int i = 3;
while (i >= 0)
{
    System.out.println(i);
    i--;
}
for

for (int i = 3; i >= 0; i--) { System.out.println(i); }
while
int i = 0;
while (i < 3)
{
    System.out.println(i);
    i++;
}
for

for (int i = 0; i < 3; i++) { System.out.println(i); }
while
boolean isExit = false;
while (!isExit)
{
    String s = buffer.readLine();
    isExit = s.equals("exit");
}
for

for (boolean isExit = false; !isExit; ) { String s = buffer.readLine(); isExit = s.equals("exit"); }
while
while (true)
    System.out.println("C");
for
for (; true; )
    System.out.println("C");
while
while (true)
{
    String s = buffer.readLine();
    if (s.equals("exit"))
        break;    
}
for
for (; true; )
{
    String s = buffer.readLine();
    if (s.equals("exit"))
        break;    
}

— Эээ?

— Данные циклы эквиваленты. Если while содержит в скобках одно условие, то for – три. Но при компиляции for превращается в такой же цикл, как и while.

— Первое выражение в цикле for (выделено зеленым) выполняется один раз до цикла.

Второе выражение выполняется каждый раз перед исполнением тела цикла – аналогично условию в цикле while.

Третье – каждый раз после исполнения тела цикла.

— А зачем нужен ещё один цикл. С while все прекрасно понятно.

— Это сделано для удобства программистов. Циклы встречаются в программировании очень часто, и удобно, когда в одной строчке собрана информация о стартовом значении переменной, условии её изменения и команда, которая её меняет.

4
Опрос
Циклы, 4 уровень, 11 лекция
Недоступен
Циклы
Циклы
Комментарии (248)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
ThunDer104 Уровень 6
9 июня 2024
Нашел эту лекцию через поиск, был удивлен, что она у меня не открыта и я ее не видел, а потом понял, что это архив)
16 апреля 2023
Почему-то не проходит "Программа должна выводить таблицу умножения 10х10." это условие. public class Solution { public static void main(String[] args) { for(int i = 1; i <= 10; i++){ System.out.println(); for(int j = 1;j <= 10; j++){ System.out.print(i * j + " "); } } } } код выводит правильно. Выше прочитал, что добавляется еще пробел в конце каждой строчки, но не особо понял на этот счет...
Anonymous #2277416 Уровень 13
17 июля 2023
У тебя получается первая строка пустой. Поставь System.out.println(); не перед, а после внутреннего цикла.
Антон Головин Уровень 11
30 декабря 2022
Я могу ошибаться, но у while и for есть отличие, которое заключается в видимости переменной. У while переменная находится вне тела цикла (метода), а значит может быть переиспользована в других методах класса, в цикле for переменная заключена в сам метод и становится невидимой в других методах цикла.
Sammi Уровень 18
6 января 2023
можно её тоже вывести ☺️
Anonymous #2277416 Уровень 13
17 июля 2023
Я читал следующее логичное объяснение: for используют, когда количество циклов известно. Собственно это количество и отмечается в условии в скобках. while же используется при неизвестном изначально количестве циклов. И там в качестве стопа обычно и используется boolean.
zollik Уровень 11
14 октября 2022
Долго я допирал в этот раз как именно квадрат построить! Если будут вопросы, то обязательно задавайте, буду объяснять - ибо самый лучший способ полностью понять тему - надо ее объяснять!
Anonymous #3102253 Уровень 7
13 августа 2022
Зачем сюда выкладывают готовые решения? Я теперь всегда боюсь читать чат, пока все задачи не решу. Так еще и + ставят под готовыми решениями ну или почти готовыми всегда по разному.
ZeusMan Уровень 13
6 апреля 2022

for(int i = 1;i<=10;i++){
                
                for(int a = 1;a<=10;a++){
                    System.out.print(a * i + " ");
                }
                System.out.println();
                
            }
Минут 20 думал, были сложные, кривые решения, остановился на этом. Да, оно, может, тоже кривое, но работает и выглядит аккуратно, на мой взгляд) Прикольная задача. P.S. После коммента посмотрел правильное решение, стало так тепло на душе😄
Алексей Шилин Уровень 9
20 июня 2022
А можешь обьяснить как это работает ... я так и не понял.
Dimash Уровень 1
17 августа 2022
разобрался? объяснить?
Anonymous #3150530 Уровень 4
1 сентября 2022
а можешь мне объяснить пж?
Dimash Уровень 1
1 сентября 2022
Мы создаем два цикла for, т.е. цикл в цикле Сначала мы заходим в первый цикл, а затем во второй => т.е. цикл for первый исполняется один раз (1<10 = true => next cycle => исполняем полностью следующий цикл и всё что внутри него), а затем исполняется следующий for до момента окончания верности условия, итерация тела цикла, и возвращение ко второму шагу первого for, а затем снова вхождение во второй и т.д. P.S. после исполнения второго for мы выходим из него и перенос строки путем добавления этой строки за пределами видимости второго массива

System.out.println
Anonymous #3269038 Уровень 7
28 марта 2023
Благодарю, добрый человек! Теперь наконец-то механизм действия стал совершенно понятен 👌
Максим Уровень 5
21 февраля 2022

int q; int w = 1;
		while (w <=10) {
			for (q = 1; q <= 10; q++) {
			System.out.print(q * w + " ");
			}
			w++;
			System.out.println();
		}
Есть чувство что корявое решение, хотя результат получил. Кто поопытнее - озвучьте свой взгляд =)
Виктор Уровень 1
11 марта 2022
1) Ну я бы не мешал в этой задаче while и for. По сути у вас каждый цикл выполняет одно и тоже, мешать их нет никакого смысла. Используйте или while или for. 2) Вот "for (q = 1; q <= 10; q++)" можно было бы объявить как "for (int q = 1; q <= 10; q++)"
Just Galaxy Уровень 3
16 января 2022

 for(int i=1;i<11;i++){
            System.out.println();
            for(int j=1;j<11;j++){
                System.out.print(i * j + " ");
            }
        }
Говорит что не выведена таблица 10х10 но она выводится что не так?
Anonymous #2967014 Уровень 21
19 января 2022
System.out.print(i * j + " "); добавляет в конец каждой строки пробелы, а они нужны только между цифрами
Дмитрий Н. Уровень 4
26 января 2022
вторую строку надо переместить после второго цикла
Степан Уровень 5
27 января 2022
В требованиях к заданию есть "В программе должен использоваться только цикл while."
Smail_ Уровень 8
23 декабря 2021
Ребят, главное понять какие счетчики поставить, думал над задачей минут 15, решил с 1 раза)))
WriturX [Andrij] Уровень 16
22 декабря 2021
Крутятский пример, я вжизни такого не видел =))

for (boolean isExit = false; !isExit; ) {
    String s = buffer.readLine();
    isExit = s.equals("exit");
}