English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
В этом руководстве мы будем изучать, как использовать циклы while и do...while в Java с помощью примеров и также рассмотрим, как работает цикл while в компьютерном программировании
В компьютерном программировании циклы используются для повторения определённых участков кода до тех пор, пока не будет выполнено определённое условие (тестовое выражение равно false). Например:
Представьте себе, что нам нужно напечатать предложение 50 раз. Хорошо, мы можем сделать это, используя команду print 50 раз (без использования цикла). Как насчет того, чтобы напечатать предложение один миллион раз? Вам нужно использовать цикл. Используя цикл, мы можем написать команду print один раз и выполнить её любое количество раз.
Это всего лишь простая демонстрация, которая показывает важность циклов в компьютерном программировании. В Java существует три типа циклов:for цикли циклы while и do-while.
Синтаксис цикла while в Java:
while (testExpression) { // Код в теле цикла while {}
В данном синтаксисе, что находится в скобкахТестВыражение (testExpression) является булевым выражением. Если результат вычисления тестового выражения (testExpression) true,
Инструкции внутри цикла while будут выполнены.
Затем тестовое выражение (testExpression) оценивается снова.
Этот процесс продолжается до тех пор, пока тестовое выражение не будет оценено как false. Если результат вычисления тестового выражения false,
Цикл 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.
// Напишите код для поиска суммы всех натуральных чисел от 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
Цикл do...while подобен циклу while, но есть ключевое различие: тело цикла выполняется один раз до проверки тестового выражения.
Это грамматика цикла do...while.
do { // Код в теле цикла do...while } while (testExpression);
Тело цикла do...while выполняется один раз (до проверки тестового выражения). Только после этого проверяется тестовое выражение.
Если тестовое выражение вычислено как true, то выполняется код в теле цикла, и тестовое выражение вычисляется снова. Этот процесс продолжается до тех пор, пока тестовое выражение не вычислено как false.
Цикл do..while завершается, когда тестовое выражение равно false.
Ниже приведен пример программы, которая вычисляет сумму введенных пользователем чисел до тех пор, пока пользователь не введет 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.