JavaRush /Курсы /Java Syntax Pro /Циклы в Java

Циклы в Java

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

1. Циклы в нашей жизни

Очень часто в нашей жизни приходится выполнять однотипные действия много раз. Например, мне нужно отсканировать многостраничный документ. Тогда мы снова и снова выполняем один и тот же порядок действий:

  • Положить первую страницу на сканер
  • Нажать кнопку сканировать
  • Положить следующую страницу

Вручную это делать сложно. Было бы хорошо, если бы этот процесс можно было как-то автоматизировать.

Или еще пример: я хочу пометить все непрочитанные письма в почтовом ящике как спам. Когда-то их нужно было выделять по одному и помечать как спам.

Но программисты народ ленивый, поэтому эту функцию уже давно автоматизировали: вы просто выделяете любой список писем и нажимаете кнопку «пометить как спам», а ваш почтовый клиент сам проходится по этому списку и переносит каждое письмо в папку спам.

Что тут сказать? Удобно, когда компьютер или программа могут сделать сотни и тысячи рутинных операций за один клик. Сейчас этому научитесь и вы.


2. Цикл while

Оператор if-else существенно расширил наши возможности программирования: теперь можно писать программы, которые выполняют разные действия в разных ситуациях. Но есть еще одна вещь, которая сделает наши программы на порядок мощнее — это циклы.

В Java есть 4 вида циклов: while, for, for-each и do-while. Сейчас мы разберем самый первый из них.

Оператор цикла while очень простой и состоит всего из двух частей: условие и тело цикла. Тело цикла выполняется снова и снова, пока условие равно true. Общий вид цикла while такой:

while (условие)
   команда;
Запись цикла while с одной командой
while (условие)
{
   блок команд
}
Запись цикла while с блоком команд

Все очень просто. Команда или блок команд выполняются снова и снова, пока условие цикла истинно — равно true.

Это работает так: сначала проверяется условие, и если оно истинно, выполняется тело цикла (команда или блок команд), затем снова проверяется условие и снова выполняется тело цикла. И так до тех пор, пока условие не станет ложным.

Если условие всегда будет истинно, значит программа никогда не прекратит работать и будет всегда выполнять цикл.

Если же в самый первый раз условие было ложно, тело цикла не выполнится ни разу.


3. Примеры циклов

Вот несколько практических примеров использования циклов.

Код Пояснение
int  n = 5;
while (n > 0)
{
   System.out.println(n);
   n--;
}
На экран будут выведены 5 строк:
5
4
3
2
1
Код Пояснение
int  n = 0;
while (n < 10)
{
   System.out.println(n);
   n++;
}
На экран будут выведены 10 строк:
0
1
...
8
9
Код Пояснение
Scanner console = new Scanner(System.in);
while(console.hasNextInt()) {
   int x = console.nextInt();
} 
Программа считывает с клавиатуры числа до тех пор, пока вводят именно числа.
Код Пояснение
while (true)
   System.out.println("C");
Программа будет бесконечно печатать на экран букву С.
Код Пояснение
Scanner console = new Scanner(System.in);
boolean isExit = false;
while (!isExit)
{
   String s = console.nextLine();
   isExit = s.equals("exit");
}
Программа будет вводить строки с клавиатуры,

пока не будет введена строка exit.

Функция equals() в предыдущем примере используется для сравнения строк. Если строки равны, функция вернет результат — true, если строки не равны, то вернет false.



4. Цикл в цикле

Во время знакомства с условным оператором вы увидели, что с его помощью можно реализовывать сложную логику, если комбинировать несколько условных операторов. Другими словами, использовать if внутри if-а.

С циклами тоже так можно. Чтобы написать цикл в цикле, нужно в теле первого цикла написать второй. Выглядеть это будет примерно так:

while (условие внешнего цикла)
{
   while (условие внутреннего цикла)
   {
     блок команд
   }
}
Цикл whileблоком команд) внутри другого цикла while

Разберем три задачи.

Задача 1. Допустим, мы хотим написать программу, которая бы выводила на экран 4 раза слово Мама. Цикл — это именно то, что нам нужно. И примерно так выглядел бы наш код:

Код Пояснение
int  n = 0;
while (n < 4)
{
   System.out.println("Мама");
   n++;
}
На экран будут выведены 4 строки:
Мама
Мама
Мама
Мама

Задача 2. Мы хотим написать программу, которая бы выводила в одну строку 5 букв А. Для этого нам опять нужен цикл. Вот как будет выглядеть этот код

Код Пояснение
int n = 0;
while (n < 5)
{
   System.out.print("A");
   n++;
}
Вместо println пишем print, иначе каждая буква A будет в отдельной строке.

На экран будет выведено:
AAAAA

Задача 3. Мы хотим вывести на экран прямоугольник из букв А размером в 4 строки и 5 столбцов. А вот для этого нам уже нужны вложенные циклы. Просто возьмем первый пример, где мы выводим 4 строки и заменим код по выводу одной строки на код из второго примера.

Код Пояснение
int n = 0;


      
while ( n < 4) { int m = 0;
while ( m < 5) { System.out.print("А"); m++; }
System.out.println(); n++; }
 
Внешний цикл обозначен фиолетовым цветом, он использует переменную n для подсчета количества витков цикла.

Внутренний цикл обозначен зеленым цветом. Для подсчета количества витков цикла он использует переменную m.

Нужно явно переносить курсор на следующую строчку, после того как отработал внутренний цикл. Иначе все буквы, которые выведет программа, будут в одной строке.

На экран будет выведено:
ААААА
ААААА
ААААА
ААААА

Внешний и внутренний циклы должны использовать разные переменные для подсчета количества уже сделанных витков. Также пришлось добавить команду System.out.println() после внутреннего цикла, т.к он печатает буквы А в одну строку, и после вывода всех букв кто-то должен перенести курсор на новую строчку.



5. Сравнение циклов: Java vs Pascal

Многие из вас изучали в школе Паскаль, поэтому чтобы облегчить вам понимание материала, приведем сравнение циклов while в языке Pascal и в Java. Если вы не знаете Pascal, просто пропустите этот материал.

Pascal Java
i := 3;
While i >= 0 Do
   Begin
      WriteLn(i);
      i := i - 1;
   End;
int i = 3;
while (i >= 0)
{
   System.out.println(i);
   i--;
}
i := 0;
While i < 3 Do
   Begin
      WriteLn(i);
      i := i + 1;
   End;
int i = 0;
while (i < 3)
{
   System.out.println(i);
   i++;
}
IsExit := False;
While Not isExit Do
   Begin
      ReadLn(s);
      isExit :=  (s = 'exit');
   End;
boolean isExit = false;
while (!isExit)
{
   String s = console.nextLine();
   isExit = s.equals("exit");
}
While True Do
   WriteLn('C');
while (true)
   System.out.println("C");
While True Do
   Begin
     ReadLn(s);
     If s = 'exit' Then
       Break;
   End;
while (true)
{
   String s = console.nextLine();
   if (s.equals("exit"))
     break;
}


Комментарии (823)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Lena Уровень 10
19 декабря 2025
public class Solution { public static void main(String[] args) { //напишите тут ваш код int vertikal = 0; while (vertikal < 10) { int horizont = 0; while (horizont <20) { if (horizont ==0 || horizont == 19 || vertikal ==0 || vertikal ==9) { System.out.print ("Б"); } else { System.out.print(" "); } horizont ++; } System.out.println (); vertikal ++; } } } у меня вышло так немного переименовала чтоб проще было представлять
17 декабря 2025

/* 
Незаполненный прямоугольник
*/

public class Solution {
    public static void main(String[] args) {
        String letter = "Б";
        int height = 10;
        int width = 20;

        int i = 0;
        while (i < height) {
            int j = 0;
            while (j < width) {
                String print = j == 0 || j == width - 1 ? letter : i == 0 || i == height - 1 ? letter : " ";
                System.out.print(print);
                j++;
            }
            System.out.print("\n");
            i++;
        }
    }
}
C0N5P1RACY Уровень 21
26 ноября 2025
ОТДЫХАЕМ !!
kaddlz Уровень 23
26 ноября 2025

/* 
Незаполненный прямоугольник
*/

public class Solution {
    public static void main(String[] args) {
        int n = 0;
        while (n < 10) {
            int m = 0;
            while (m < 20) {
                if ((n != 0 && n != 9) && (m != 0 && m != 19)) {
                    System.out.print(" ");
                } else {
                    System.out.print("Б");
                }
                m++;
            }
            n++;
            System.out.println();
        }
    }
}
Роман Зарубин Уровень 8
25 ноября 2025
РАБОТАЕМ !!
Nik Уровень 10
20 ноября 2025
Решение по пустотелому прямоугольнику. ушло минут 15 на решение. public class Solution { public static void main(String[] args) { int firstLoop = 0; int secondLoop = 0; int thirdLoop = 0; while(firstLoop < 1){ int inFirstLoop = 0; while(inFirstLoop < 20){ System.out.print('Б'); inFirstLoop++; } System.out.println(); firstLoop++; } while (secondLoop < 8){ int inSecondLoop = 0; while(inSecondLoop < 1){ System.out.print('Б' + " " + 'Б'); inSecondLoop++; } System.out.println(); secondLoop++; } while(thirdLoop < 1){ int inThirdLoop = 0; while(inThirdLoop < 20){ System.out.print('Б'); inThirdLoop++; } thirdLoop++; } } }
Nik Уровень 10
20 ноября 2025
Парни чтобы вы понимали я потратил день на то чтобы дойти до того выражения result = result + scan и ввести scan перед while господи верни моё время public class IsEnter { public static void main(String[] args) { Scanner input = new Scanner(System.in); int result = 0; Boolean isEnter = false; while(input.hasNextInt() && !isEnter){ int scan = input.nextInt(); result = result + scan; String end = input.nextLine(); isEnter = end.equalsIgnoreCase("ENTER"); } System.out.println(result); } }
string name Уровень 7
15 ноября 2025
Привет всем. У кого сколько времени ушло на курс по джава?
Bogdan Уровень 19
2 октября 2025
Накидайте лайков пожалуйста для ачивки. И успешного обучения всем! Да прибудет с вами сила!
Роман Уровень 21
29 сентября 2025
Мы ж hasNextInt не проходили?