JavaRush /Курси /Java Syntax Zero /Цикл do-while

Цикл do-while

Java Syntax Zero
Рівень 4 , Лекція 8
Відкрита

1. Зворотний цикл

У Java є ще один різновид циклу while — цикл do-while. Він дуже схожий на while і так само складається з двох частин: «умови» й «тіла циклу». Тіло циклу виконується знов і знов, доки умова дорівнює true. Цикл do-while має такий загальний вигляд:

do
   команда;
while (умова)

або

do
{
   блок команд
}
while (умова)

Проте ці цикли відрізняються послідовністю виконання: у циклі while вона така: умова, тіло циклу, умова, тіло циклу, умова, тіло циклу, …

А в циклі do-while вона дещо інша: тіло циклу, умова, тіло циклу, умова, тіло циклу, …

Фактично, різниця між циклами while і do-while полягає лише в тому, що тіло циклу в циклі do-while виконується принаймні один раз.


2. Переваги використання циклу do-while

Власне, єдиною відмінністю циклу do-while від циклу while є саме те, що тіло циклу в циклі do-while виконується принаймні один раз.

Цикл do-while зазвичай використовують саме тоді, коли немає потреби перевіряти умову, доки тіло циклу не виконано. Приміром, у тілі циклу виконуються певні обчислення, а потім їх результати використовуються в умові.

Приклад:

Програма вводить рядки з клавіатури, доки не буде введено слово exit

while do while
String s;
while (true)
{
   s = console.nextLine();
   if (s.equals("exit"))
      break;
}
String s;
do
{
 s = console.nextLine();
}
while (!s.equals("exit"));

Оператори break и continue в циклі do-while діють так само, як і в циклі while.


3. Порівняння циклів do-while: Java і Pascal

У мові Pascal також є цикл, подібний до do-while, тільки він називається repeat-until. Однак він дещо відрізняється від циклу do-while. У циклі repeat-until зазначають умову не для продовження циклу, а для виходу з нього.

Приклади:

Pascal Java
 
Repeat
   ReadLn(s);
Until s = 'exit';
 
String s;
do {
   s = console.nextLine();
} while ( !s.equals("exit") );

Отакої! Тут Pascal виглядає справжнім красунчиком порівняно з Java. Годі вже приклади з Pascal показувати, а то засміють.


Коментарі (31)
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ
Anonymous #3619820 Рівень 6
5 вересня 2025

package ua.javarush.task.pro.task04.task0414;

import java.util.Scanner;

public class Solution {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String s = scanner.nextLine();
        int number = scanner.nextInt();
        do
        {
            System.out.println(s);
            number--;
        }while(number > 0 && number < 4);

    }
}
29 січня 2025
Мені ось цікаво, чому з усіх, хто тут ділився своїм рішенням, ніхто не допетрив зробити перевірку на "дурня"? Адже, якщо другим введенням буде не число, а щось інше, ваша програма не буде працювати🤦‍♂️ Ось як треба): Scanner scanner = new Scanner(System.in); String str = scanner.nextLine(); int n = 0; while (scanner.hasNextInt()) { //чувак, пока ты не введешь именно ЧИСЛО, мы с этого места не сдвинемся)) n = scanner.nextInt(); break; } int i = 0; do { System.out.println(str); i++; } while (i < n && n > 0 && n < 5);
Олег Рівень 21
14 березня 2025
Просто цього умова задачі не вимагає. чому тоді немає перевірки str ?
Alexander Safronyuk Рівень 5
10 серпня 2024
5 лишніх строчок коду у порівнянні з правильною відповіддю :(
Maxim Рівень 6
6 червня 2023
дiшов до do-while, дуже важко менi це все даєтся
Тетяна Рівень 7 Expert
7 червня 2023
Ти не один такий. Мені теж важко. Але це який прогрес! Ти зміг дійти до 6 рівня.
Dmytro Рівень 26
3 червня 2024
там же и остались оба на 6 и 7....
29 січня 2025
Спустя полтора года🤦‍♂️
28 листопада 2022
Чому не працює? Хоча результат дає. String str = consol.nextLine(); int number = consol.nextInt(); do { if(number < 0 || number > 5) { System.out.println(str); break; }else if(number > 0 && number <= 5){ System.out.println( str ); } number--; }while(number >= 0 && number <= 5);
Roma Chernesh Рівень 16
2 грудня 2022
первірка має бути (number < 4), бо цикл do-while запускається один раз "додатково" до перевірки
2 грудня 2022
Вельми вдячний!)
LisTRK Рівень 5
20 вересня 2022
Чому не працює? Scanner scanner = new Scanner(System.in); int number = scanner.nextInt(), i = 0; String string = scanner.nextLine(); do{ i++; System.out.println(string); }while((i < number)&&(number > 0)&&(number<5));
Roma Chernesh Рівень 16
2 грудня 2022
первірка має бути (number < 4), бо цикл do-while запускається один раз "додатково" до перевірки
Гаркін Рівень 14
11 лютого 2024
Для тих хто не зрозумів чому не працює - у завданні спочатку вноситься String , а потім int
777 Рівень 16
13 вересня 2022
public class Solution { public static void main(String[] args) { //напишіть тут ваш код Scanner scanner = new Scanner(System.in); String line = scanner.nextLine(); int number = scanner.nextInt(); do { System.out.println(line); number--; } while (number > 0 && number < 4); } }
Orest Orest Рівень 10
25 липня 2022
Написав схоже до правильної відповіді, але не пройшов перевірку, while (number > 0 && number < 5); а у правильній відповіді while (number > 0 && number < 4); , хоча в умові сказано не більше/рівне 5 (чому 5 під цю умову не підходить, поясніть мені будь ласка, дякую!)
Volodymyr Рівень 5
24 серпня 2022
тому що в тілі циклу перед перевіркою умови число number зменшили на 1

number--;
тобто якщо ви його ввели 5 то на момент перевірки воно вже має значення 4 😀
Roma Chernesh Рівень 16
2 грудня 2022
первірка має бути (number < 4), бо цикл do-while запускається один раз "додатково" до перевірки
Me Lex Рівень 12
8 лютого 2022
Делитесь своими вариантами ) а то я вижу по коментариях >=0 <=5 многих запутал ) int x=0; do { System.out.println(forShow); x++; if((number<=0) || (number>=5)) break; }while(x<number);
kk-gor Рівень 10
19 червня 2022
Ділитись так ділитись...

        String s1 = sc.nextLine();
        int n1 = sc.nextInt();
        int n2 = 0;
        do {
            System.out.println(s1);
            n2++;
        } while (n1>0 && n1<5 && n2<n1);
Dr. Armor king Рівень 9
27 червня 2022
String s; int i = 0; int number = 0; s = scan.nextLine(); number = scan.nextInt(); do { if(number <= 0 || number >=5){ System.out.println(s); break; } else { System.out.println(s); } i++; } while(i < number); Порада: якщо не зрозумілі відношення між цифрами, наприклад як тут 5 та 0, намагайтесь розписати все на папері спочатку)
Anonymous #696530 Рівень 19
7 липня 2022
String s = scanner.nextLine(); int number = scanner.nextInt(); int i = 0; do { System.out.println(s); if(number <= 0 || number >= 5) break; i++; } while (i != number);
Serhii Nahryshko Рівень 14
28 жовтня 2022
Scanner sc = new Scanner(System.in); String text = sc.nextLine(); int number = sc.nextInt(); if (number > 0 && number < 5) { int i = 1; do { System.out.println(text); i++; } while (i <= number); } else { System.out.println(text); }
Roma Chernesh Рівень 16
2 грудня 2022
первірка має бути (number < 4), бо цикл do-while запускається один раз "додатково" до перевірки
Alex Lu Рівень 10
5 січня 2022
не зациклюйтесь на цифрах 0 та 5 .пишіть так як потрібно для результату