Статьи

Циклы Java и Do-While за пять минут

Цикл 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 . Если правильный ответ получен, цикл прекращается, и мы поздравляем игрока.

В то время как цикл Java завершается, но не слишком

Резюме

Циклы позволяют повторять блок кода несколько раз. В этой статье рассматриваются циклы while и do-while в Java. Они относительно похожи в том, что оба проверяют условие и выполняют тело цикла, если оно имеет значение true но у них есть одно существенное отличие: условие цикла while проверяется перед каждой итерацией — однако проверяется условие цикла для do-while в конце каждой итерации. Это означает, что цикл do-while while всегда выполняется хотя бы один раз.

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