Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
49
Добавлен:
12.05.2015
Размер:
1.82 Mб
Скачать

118 Часть I. Язык Java

В этом примере, выражение (—п > 0) объединяет декремент п и проверку на нуль в одно выражение. Вот как это работает. Сначала выполняется опе­ратор —п, декрементируя п и возвращая его новое значение. Затем это зна­чение сравнивается с нулем. Если оно больше нуля, цикл продолжается, в противном случае цикл заканчивается.

Цикл do while особенно полезен, когда вы обрабатываете выбор из меню, потому что обычно требуется, чтобы тело цикла меню выполнялось по крайней мере один раз. Рассмотрим следующую программу, которая реали­зует очень простую справочную систему для Java-операторов выбора и по­вторения:

// Использование do-while для обработки выборки из меню // — простая справочная (help) система, class Menu {

public static void main(String args[J) throws Java.io.lOException { char choice;

do {

System.out.println("Справка:");

System.out.println(" 1. if");

System.out.println(" 2. switch");

System.out.println(" 3. while");

System.out.println(" 4. do while"); •System.out.println(" 5. for\n");

System.out.println("Выберите раздел:");

choice = (char) System.in.read(); ^

} while( choice < '1' j | choice > ' 5') ;

System.out.println("\n");

switch(choice) { case '1':

System.out.println("Условный оператор if:\n");

System.out.println("if(condition) statementl;");

System.out.println("else statement2;");

break; case '2':

System.out.println("Оператор выбора switch:\n") ,•

System.out.println("switch(expression) {");

System.out.println(" case value:");

System.out.println(" последовательность операторов");

System.out.println(" break;");

System.out.println(" // ...");

System.out.println("}");

break;

Глава 5. Управляющие операторы 119

case '3':

System.out.println("Оператор цикла while:\n");

System.out.println("while(condition) тело цила;");

break; case '4 ' :

System.out.println("Оператор цикла do while:\n");

System.out.println("do {");

System.out.println(" тело цикла;");

System.out.println("} while (condition);");

break; case '5':

System.out.println("Оператор цикла for:\n");

System.out.print("for(init; condition; iteration));

System.out.println(" тело цикла;");

break; } } }

Пример вывода, выполненного этой программой:

Справка:

  1. if

  2. switch

  3. while

  4. do while

  5. for

Выберите раздел: 4

Оператор цикла do while: do {

тело цикла; } while (condition);

Чтобы проверить, верно ли пользователь сделал правильный выбор, здесь используется цикл do while. Если правильного выбора нет, то номер раздела справки запрашивается повторно. Так как меню должно быть отображено по крайней мере один раз, то do while — идеальный цикл для выполнения этой задачи.

Несколько других замечаний относительно этого примера: обратите внима­ние, ЧТО СИМВОЛЫ ЧИТаЮТСЯ С Клавиатуры С ПОМОЩЬЮ ВЫЗОВа System, in. read () .

Это одна из функций консольного ввода языка Java. Хотя консольные методы ввода/вывода Java не будут обсуждаться подробно до главы 12, System, in. read о используется здесь для того, чтобы узнать о выборе поль­зователя. Он читает символы при стандартном вводе (возвращая целые чис­ла, что объясняет, почему возвращаемое значение приводится к типу char).

120 Часть I. Язык Java

По умолчанию стандартный ввод является буферизированной строкой, так что вы должны нажать клавишу <Enter>, прежде чем любые символы, кото­рые вы печатаете, будут переданы вашей программе.

Консольный ввод Java весьма ограничен и неудобен для работы. Кроме то­го, большинство реальных Java-программ и апплетов являются графически­ми и работают с окнами. По этим причинам, в данной книге консольный ввод используется не слишком часто. Однако в этом контексте он полезен. Еще один момент: поскольку используется метод System, in. read{ ), про­грамма должна определить предложение

throws Java. io. lOException

Эта строка необходима для обработки ошибок ввода и является частью сис­темы обработки особых ситуаций языка Java, которая обсуждается в главе 10.

Оператор цикла for

Простая форма цикла for была представлена в главе 2. Далее вы увидите, что это мощная и гибкая конструкция. Общая форма оператора for:

for (initialization; condition; iteration) { // тело цикла

Если повторяется только один оператор, фигурные скобки не нужны.

Цикл for работает следующим образом. В начале работы цикла выполняется выражение initialization. В общем случае это выражение устанавливает значение переменной управления циклом, которая действует как счетчик. Важ­но понять, что выражение инициализации выполняется только один раз. Затем оценивается condition. Оно должно быть булевским выражением и обычно сравнивает переменную управления циклом с некоторым гранич­ным значением. Если это выражение — true, то отрабатывают операторы из тела цикла, если — false, цикл заканчивается. Далее выполняется часть цикла iteration. Обычно это выражение, которое осуществляет инкремент-ные или декрементные операции с переменной управления циклом. Затем цикл реализовывает итерации. В каждом проходе цикла — - сначала оценива­ется условное выражение, потом выполняется тело цикла и затем — выра­жение iteration. чЭтот процесс повторяется до тех пор, пока управляющее выражение не станет false.

Ниже приводится версия программы "тиков", которая использует цикл for:

// Демонстрирует for-цикл. class ForTick {

public static void main (String args[]) { int n;

Соседние файлы в папке JavaLit