Программирование на Java | Модемы | Дипломы по радиотехнике и связи |
Программирование на языке Java
Циклы
Любой цикл можно разделить на 4 части — инициализацию, тело, итерацию и условие завершения. В Java есть три циклические конструкции: while (с пред-условием), do-while (с пост-условием) и for (с параметром).

while

Этот цикл многократно выполняется до тех пор, пока значение логического выражения равно true. Ниже приведена общая форма оператора while:

[ инициализация; ] while ( завершение ) {

тело;

[итерация;] }

Инициализация и итерация необязательны. Ниже приведен пример цикла while для печати десяти строк «tick».

class WhileDemo {

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

while (n > 0) {

System.out.println("tick " n); n—;

}

} }

do-while

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

[ инициализация; ] do { тело; [итерация;] } while ( завершение );

В следующем примере тело цикла выполняется до первой проверки условия завершения. Это позволяет совместить код итерации с условием завершения:

class DoWhile {

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

do {

System.out.println("tick " n); } while (—n > 0);

} }

for

В этом операторе предусмотрены места для всех четырех частей цикла. Ниже приведена общая форма оператора записи for.

for ( инициализация; завершение; итерация ) тело;

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

class ForDemo {

public static void main(String args[]) { for (int i = 1; i <= 10; System.out.println("i = " i); }

}

Следующий пример — вариант программы, ведущей обратный отсчет.

class ForTick {

public static void main(String args[]) { for (int n = 10; n > 0; n—) System.out.println("tick " n); } }

Обратите внимание — переменные можно объявлять внутри раздела инициализации оператора for. Переменная, объявленная внутри оператора for, действует в пределах этого оператора.

А вот — новая версия примера с временами года, в которой используется оператор for.

class Months {

static String months[] = {

"January", "February", "March", "April", "May", "June",

"July", "August", "September", "October", "November", "December" };

static int monthdays[] =

{ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };

static String spring = "spring";

static String summer = "summer";

static String autumn = "autumn";

static String winter = "winter";

static String seasons[] = { winter, winter, spring, spring, spring, summer, summer, summer,

autumn, autumn, autumn, winter }; public static void main(String args[]) { for (int month = 0; month < 12; month ) { System.out.println(months[month] " is a "

seasons[month] " month with " monthdays[month] " days."); } } }

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

С:\> Java Months

January is a winter month with 31 days. February is a winter month with 28 days. March is a spring month with 31 days. April is a spring month with 30 days. May is a spring month with 31 days. June is a summer month with 30 days. July is a summer month with 31 days. August is a summer month with 31 days. September is a autumn month with 30 days. October is a autumn month with 31 days. November is a autumn month with 30 days. December a winter month with 31 days.

Оператор запятая

Иногда возникают ситуации, когда разделы инициализации или итерации цикла for требуют нескольких операторов. Поскольку составной оператор в фигурных скобках в заголовок цикла for вставлять нельзя, Java предоставляет альтернативный путь. Применение запятой (,) для разделения

нескольких операторов допускается только внутри круглых скобок оператора for. Ниже приведен тривиальный пример цикла for, в котором в разделах инициализации и итерации стоит несколько операторов.

class Comma {

public static void main(String args[]) { int a, b;

for (a = 1, b = 4; a < b; a , b—) {

System.out.println("a = " a); System.out.println("b = " b);

}

} }

Вывод этой программы показывает, что цикл выполняется всего два раза.

С: \> java Comma

а = 1

b = 4

а = 2

b = 3

continue

В некоторых ситуациях возникает потребность досрочно перейти к выполнению следующей итерации, проигнорировав часть операторов тела цикла, еще не выполненных в текущей итерации. Для этой цели в Java предусмотрен оператор continue. Ниже приведен пример, в котором оператор continue используется для того, чтобы в каждой строке печатались два числа.

class ContinueDemo {

public static void main(String args[]) {

for (int i=0; i < 10; i ) {

System.out.print(i " "); if (i % 2 == 0) continue; System.out.println("");

}

}}

Если индекс четный, цикл продолжается без вывода символа новой строки. Результат выполнения этой программы таков:

С: \> java ContinueDemo 0 1 2 3

5

7 8 9

Как и в случае оператора break, в операторе continue можно задавать метку, указывающую, в каком вложенных циклов вы хотите досрочно прекратить выполнение текущей итерации. Для иллюстрац служит программа, использующая оператор continue с меткой для вывода треугольной таблицы умножения для чисел от 0 до 9:

class ContinueLabel {

public static void main(String args[]) {

outer: for (int i=0; i < 10; i ) {

for (int j = 0; j< 10; {

if (j > i) {

System.out.println(""); continue outer;

System.out.print(" " (i * j)); }

}

}}

Оператор continue в этой программе приводит к завершению внутреннего цикла со счетчиком j и переходу к очередной итерации внешнего цикла со счетчиком i. В процессе работы эта программа выводит следующие строки:

С:\> Java ContinueLabel

0

0 1

0 2 4 0 3 6 9 0 4 8 12 16 0 5 10 15 20 25 0 6 12 18 24 30 36 0 7 14 21 28 35 42 49 0 8 16 24 32 40 48 56 64 0 9 18 27 36 45 54 63 72 81

< пред след >
вернуться к содержанию
вернуться к списку источников

перейти на главную страницу