English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Основной учебник Java

Java Управление потоком

Java Массив

Java Ориентированное на объекты (I)

Java Ориентированное на объекты (II)

Java Ориентированное на объекты (III)

Обработка исключений в Java

Java Список (List)

Java Очередь (Queue)

Java Карта (Map)

Java Множество (Set)

Java Вход/Выход (I/O)

Java Reader/Writer

Другие темы Java

Java while и do...while циклы

В этом руководстве мы будем изучать, как использовать циклы while и do...while в Java с помощью примеров и также рассмотрим, как работает цикл while в компьютерном программировании

В компьютерном программировании циклы используются для повторения определённых участков кода до тех пор, пока не будет выполнено определённое условие (тестовое выражение равно false). Например:

Представьте себе, что нам нужно напечатать предложение 50 раз. Хорошо, мы можем сделать это, используя команду print 50 раз (без использования цикла). Как насчет того, чтобы напечатать предложение один миллион раз? Вам нужно использовать цикл. Используя цикл, мы можем написать команду print один раз и выполнить её любое количество раз.

Это всего лишь простая демонстрация, которая показывает важность циклов в компьютерном программировании. В Java существует три типа циклов:for цикли циклы while и do-while.

Цикл while в Java

Синтаксис цикла while в Java:

while (testExpression) {
    // Код в теле цикла while
{}

Как работает цикл while?

В данном синтаксисе, что находится в скобкахТестВыражение (testExpression) является булевым выражением. Если результат вычисления тестового выражения (testExpression) true,

  • Инструкции внутри цикла while будут выполнены.

  • Затем тестовое выражение (testExpression) оценивается снова.

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

  • Цикл while завершается.

Діаграмма процесса цикла while

Как работает цикл while

Пример 1: Цикл while

// Программа печатающая строку 10 раз
class Loop {
    public static void main(String[] args) {
      
        int i = 1;
	   
        while (i <= 10) {
            System.out.println("Строка " + i);
            ++i;
        {}
    {}
{}

Вывод

Строка 1
Строка 2
Строка 3
Строка 4
Строка 5
Строка 6
Строка 7
Строка 8
Строка 9
Строка 10

В данном примере у нас есть тестовое выражение (i <= 10). Оно проверяет, является ли значение i меньше или равно 10.

Вначале значение i равно 1. Поэтому результат вычисления тестового выражения (testExpression) равен true. Поэтому выполняется инструкция print внутри цикла while.

Обратите внимание на инструкции внутри цикла while

 ++i;

В каждом итерации значение i увеличивается на 1. После 10 итераций значение i равно 11. Затем тестовое выражение (i <= 10) становится false, и цикл while завершается.

Для получения дополнительной информации о тестовых выражениях и их оценке посетитеРеляционные операторы JavaиЛогические операторы Java.

Пример 2: Цикл while на Java

// Напишите код для поиска суммы всех натуральных чисел от 1 до 100.
class AssignmentOperator {
    public static void main(String[] args) {
      
        int sum = 0, i = 100;
	   
        while (i != 0) {
            sum += i; // эквивалентно sum = sum + i;
            --i;
        {}
	   
        System.out.println("Sum = " + sum);
    {}
{}

Вывод

Sum = 5050

Здесь у нас есть две переменные sum и i, их начальные значения равны 0 и 100.

В каждом итерации цикла while

  • Присваиваем значение переменной sum: sum + i

  • Значение i уменьшается на 1

Цикл продолжается до тех пор, пока значение i не станет равным 0.

1-е повторение: i = 100, sum = 0 + 100 = 100, в то же время --i = 99
2-е повторение: i = 99, sum = 100 + 99 = 199, в то же время --i = 98
3-е повторение: i = 98, sum = 199 + 98 = 297, в то же время --i = 97
... .. ...
... .. ...
99-е повторение: i = 2, sum = 5047 + 2 = 5049, в то же время --i = 1
100-е повторение: i = 1, sum = 5049 + 1 = 5050, в то же время --i = 0

Java цикл do...while

Цикл do...while подобен циклу while, но есть ключевое различие: тело цикла выполняется один раз до проверки тестового выражения.

Это грамматика цикла do...while.

do {
   // Код в теле цикла do...while
} while (testExpression);

Как работает цикл do...while?

Тело цикла do...while выполняется один раз (до проверки тестового выражения). Только после этого проверяется тестовое выражение.

Если тестовое выражение вычислено как true, то выполняется код в теле цикла, и тестовое выражение вычисляется снова. Этот процесс продолжается до тех пор, пока тестовое выражение не вычислено как false.

Цикл do..while завершается, когда тестовое выражение равно false.

Діаграмма цикла do ... while

Діаграмма работы цикла do ... while

Пример 3: цикл do ... while

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

Чтобы принять ввод пользователя, мы используем объект Scanner. Для получения дополнительной информации о Scanner, пожалуйста, посетитеJava Scanner.

import java.util.Scanner;
class Sum {
    public static void main(String[] args) {
	   
        Double number, sum = 0.0;
        // Создание объекта класса Scanner
        Scanner input = new Scanner(System.in);
        do {
            // Принимать ввод пользователя
            System.out.print("Ввести цифру: ");
            number = input.nextDouble();
            sum += number;
        } while (number != 0.0); // тестовое выражение
	   
        System.out.println("Sum = " + sum);
    {}
{}

Вывод

Введи число: 2.5
Введи число: 23.3
Введи число: -4.2
Введи число: 3.4
Введи число: 0
Sum = 25.0

Бесконечный цикл

При использовании циклов мы всегда должны быть осторожны. Потому что, если мы ошибочно установим тестовое выражение, чтобы оно никогда не было false, то циклы while и do ... while будут работать вечно.

Это так называемые бесконечные циклы while и do...while. Например:

// бесконечный цикл while
while (true) {
   // тело цикла while
{}

Давайте рассмотрим пример

// бесконечный цикл while
int i = 100;
while (i == 100) {
   System.out.print("Hey!");
{}

Работа бесконечного цикла do...while подобна циклу while.