Содержание
Цикл while — это оператор потока управления, который позволяет нам запускать фрагмент кода несколько раз. Как и циклы в целом, цикл while можно использовать для повторения действия, пока выполняется условие. Структура цикла while в Java очень похожа на оператор if
в том смысле, что они оба проверяют логическое выражение и, возможно, выполняют некоторый код.
В этой статье предполагается, что вы понимаете переменные и массивы в Java. Также было бы хорошо, если бы вы имели некоторый опыт работы с условными выражениями .
Пока петля
Цикл while — самая базовая конструкция цикла в Java. Он состоит из ключевого слова while, условия цикла и тела цикла.
while (condition) { // loop body }
Один прогон тела цикла называется итерацией . Перед каждой итерацией оценивается условие цикла и, как и в случае с операторами if , тело выполняется только в том случае, если условие цикла имеет значение true
. Фактически, тело цикла while повторяется до тех пор, пока условие цикла остается true
— вы можете думать о них как о операторах, где тело оператора может повторяться.
Обычно некоторое выполнение цикла изменяет что-то, что делает условие оцениваемым как false
и, таким образом, цикл заканчивается. Цикл с условием, которое никогда не становится false
выполняется бесконечно и обычно называется бесконечным циклом .
пример
int num = 0; while (num < 10) { System.out.println(num); num++; }
В этом примере выводятся числа от 0 до 9. Если это кажется вам чуждым, не беспокойтесь. Мы пройдем это шаг за шагом.
Сначала мы инициализируем переменную num
равной 0
. Это будет наш счетчик циклов . Когда программа встречает оператор while
, его условие будет оценено. В нашем случае 0 < 10
оценивается как true
и тело цикла выполняется. Внутри тела цикла переменная num
распечатывается, а затем увеличивается на единицу. Здесь заканчивается первая итерация.
После первого прогона тела цикла условие цикла будет оцениваться во второй раз. 1 < 10
все еще оценивается как true
и следующая итерация может начаться. Как вы можете себе представить, тот же процесс будет повторяться еще несколько раз.
Последняя итерация начинается, когда num
равно 9
. Наш счетчик цикла выводится в последний раз и увеличивается до 10
. Однако на этот раз новая итерация не может начаться, поскольку условие цикла оценивается как false
. 10
не меньше 10
.
Как видите, цикл выполнялся до тех пор, пока условие цикла выполнялось. Вооружившись этими знаниями, вы можете создавать циклы while
, которые немного сложнее, но, с другой стороны, более полезны. Давайте переберем массив.
String[] names = {"Doc", "Dopey", "Bashful", "Grumpy", "Sneezy", "Sleepy", "Happy"}; int index = 0; while (index < names.length) { System.out.println(names[index]); index++; }
Общая концепция этого примера такая же, как и в предыдущем. Мы инициализируем счетчик цикла и перебираем массив, пока все элементы в массиве не будут распечатаны. Фактически, перебор массивов (или коллекций в этом отношении) является очень распространенным случаем, и Java предоставляет конструкцию цикла, которая лучше подходит для этого — цикл for
.
Do-While Loop
Цикл do-while
while очень похож на цикл while, но есть одно существенное отличие: в отличие от цикла while условие проверяется в конце каждой итерации. Это означает, что цикл do-while
while всегда выполняется хотя бы один раз.
do { // loop body } while (condition);
пример
Цикл do-while
while сначала выполняет тело цикла, а затем оценивает состояние цикла. Основываясь на результате оценки, цикл либо завершается, либо начинается новая итерация. Чтобы проиллюстрировать эту идею, давайте взглянем на простую игру « Угадай мое имя» .
Scanner scanner = new Scanner(System.in); String guess; do { System.out.print("Guess my name: "); guess = scanner.nextLine(); } while (!"Daffy Duck".equals(guess)); System.out.println("Congratulations, you guessed my name correctly!");
В примере используется Scanner
для анализа ввода из System.in
. Это стандартный поток ввода, который в большинстве случаев соответствует вводу с клавиатуры. Проще говоря, мы будем читать текст, набранный игроком.
В игре на угадывание мы хотели бы попросить игрока хотя бы один раз ответить на него и делать это, пока игрок не угадает правильный ответ. Цикл do-while
while идеально подходит здесь. В теле цикла мы получаем данные от игрока, а затем условие цикла проверяет, является ли это правильным ответом или нет. Цикл должен выполняться до тех пор, пока догадка не Daffy Duck
равной Daffy Duck
. Если правильный ответ получен, цикл прекращается, и мы поздравляем игрока.
Резюме
Циклы позволяют повторять блок кода несколько раз. В этой статье рассматриваются циклы while
и do-while
в Java. Они относительно похожи в том, что оба проверяют условие и выполняют тело цикла, если оно имеет значение true
но у них есть одно существенное отличие: условие цикла while проверяется перед каждой итерацией — однако проверяется условие цикла для do-while
в конце каждой итерации. Это означает, что цикл do-while
while всегда выполняется хотя бы один раз.
В дополнение к while
и do-while
, Java предоставляет другие конструкции цикла , которые не были рассмотрены в этой статье. И если вы достаточно заинтересованы, вы можете взглянуть на рекурсию . Иногда вместо циклов можно использовать рекурсивную функцию.