|
while, do-while и for управляют циклом и иногда классифицируются как итерационные инструкции. Инструкция повторяется до тех пор, пока управляющее логическое выражение не станет ложным. Форма цикла while следующая:
while(Логическое выражение) инструкцияЛогическое выражение вычисляется один раз в начале цикла, а затем каждый раз перед каждой будущей итерацией для инструкции.
Здесь приведен пример, который генерирует случайные числа, пока не получено определенное состояние:
//: c03:WhileTest.java// Демонстрация цикла while. public class WhileTest { public static void main(String[] args) { double r = 0; while(r < 0.99d) { r = Math.random(); System.out.println(r); } }} ///:~Здесь используется статический метод random() из библиотеки Math, который генерирует значения типа double в пределах от 0 до 1. (Это включает 0, но не включает 1.) Сравнительное выражение для while говорит, “продолжать выражение этого цикла, пока не встретится число 0.99 или больше”. Всякий раз, когда вы запускаете программу, вы будете получать список чисел разной длины.
Do-while
Форма для do-while следующая:
do инструкцияwhile(Логическое выражение);Главное отличие между while и do-while в том, что инструкция в цикле do-while всегда выполняется не менее одного раза, даже если вычисленное выражение ложное с самого начала. В цикле while, если условие ложное в первый раз, инструкция никогда не выполнится. На практике do-while используется реже, чем while.
For
Цикл for выполняет инициализацию перед первой итерацией. Затем он выполняет сравнение, а в конце каждой итерации выполняется, некоторого рода, “шагание”. Форма цикла for следующая:
for(инициализация; логическое выражение; шаг) инструкцияЛюбое из выражений: инициализация, логическое выражение или шаг, может быть пустым. Выражение проверяется перед каждой итерацией, и как только при вычислении получится false, выполнение продолжится со строки, следующей за инструкцией for. В конце каждого цикла выполняется шаг.
Цикл for обычно используется для задач “подсчета”:
//: c03:ListCharacters.java// Демонстрация цикла "for" для составления// списка всех ASCII символов. public class ListCharacters { public static void main(String[] args) { for(char c = 0; c < 128; c++) if (c!= 26) // ANSI Очистка экрана System.out.println("value: " + (int)c + " character: " + c); }} ///:~Обратите внимание, что переменная c определена в том месте, где она используется, внутри управляющего выражения цикла for, раньше начала блока, указанного открывающей фигурной скобкой. Область видимости c - это выражение, управляемое for.
Традиционные процедурные языки, типа C, требуют, чтобы все переменные были определены в начале блока, чтобы, когда компилятор создавал блок, он мог зарезервировать место для этих переменных. В Java и C++ вы можете распределить декларацию ваших переменных по всему блоку, определяя их в том месте, где они вам нужны. Это допускает естественный стиль кодирования и делает код легче для понимания.
Вы можете определить несколько переменных внутри инструкции for, но они должны быть одного типа:
for(int i = 0, j = 1; i < 10 && j!= 11; i++, j++) /* тело цикла for */;Определение int в инструкции for распространяется на i и j. Способность определять переменные в управляющем выражении является ограничением для цикла for. Вы не можете использовать этот метод ни с каким другим выражением выбора или итераций.
Дата добавления: 2015-09-11; просмотров: 74 | Поможем написать вашу работу | Нарушение авторских прав |