Главная страница

АБОБА. Справочник по программированию на Java Методическое пособие


Скачать 242.41 Kb.
НазваниеСправочник по программированию на Java Методическое пособие
АнкорАБОБА
Дата20.02.2022
Размер242.41 Kb.
Формат файлаdocx
Имя файла12642_java_method_1.docx
ТипСправочник
#368066
страница24 из 67
1   ...   20   21   22   23   24   25   26   27   ...   67

Цикл do-while


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

do {

// тело цикла

} while (условие);

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

Ниже приведена измененная программа вывода тактов, которая демонстрирует использование цикла do-while. Она генерирует такой же вывод, что и предыдущая версия.

// Демонстрация использования цикла do-while.

class DoWhile {

public static void main(String args[]) {

int n = 10;

do {

System.out.println("такт " + n);

n--;

} while(n > 0);

}

}

Хотя с технической точки зрения в приведенной программе цикл записан правильно, его можно переписать в более эффективном виде:

do {

System.out.println("такт " + n);

} while(--n > 0);

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

Цикл do-while особенно удобен при выборе пункта меню, поскольку обычно в этом случае требуется, чтобы тело цикла меню выполнялось, по меньшей мере, один раз.

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

// Использование цикла do-while для выбора пункта меню

class Menu {

public static void main(String args[])

throws java.io.IOException {

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' || choice > '5');

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

switch(choice) {

case '1':

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

System.out.println("if(условие) оператор;");

System.out.println("else оператор;");

break;

case '2':

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

System.out.println("switch(выражение) {");

System.out.println(" case константа:");

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

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

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

System.out.println("}");

break;

case '3':

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

System.out.println("while(условие) оператор;");

break;

case '4':

System.out.println("do-while:\n");

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

System.out.println(" оператор;");

System.out.println("} while (условие);");

break;

case '5':

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

System.out.print("for(инициализация; условие; повторение)");

System.out.println(" оператор;");

break;

}

}

}

Пример вывода выполнения этой программы выглядит следующим образом:

Справка по:

1. if

2. switch

3. while

4. do-while

5. for

Выберите интересующий пункт:

4

do-while:

do {

оператор;

} while (условие);

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

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

Консольный ввод Java может вызывать некоторые затруднения при работе. Более того, большинство реальных Java-программ будут графическими и ориентированным на работу в оконном режиме. Однако в данном случае он удобен. Еще один важный момент.

Поскольку мы используем метод System.in.read(), программа должна содержать выражение throws java.io.IOException. Эта строка необходима для обработки ошибок ввода. Она является составной частью системы обработки исключений Java, которая будет рассмотрена в главе 10.
1   ...   20   21   22   23   24   25   26   27   ...   67


написать администратору сайта