Java за неделю. Вводный курс - страница 15




Листинг 4.2 Пример программы с использованием логического и условного оператора

// импортируем класс JOptionPane из библиотеки Swing

import javax.swing.JOptionPane;

public class Listing4_2 {


public static void main (String [] args) {

int userData;

String userInput;

// Выводим окно запроса текущей даты

userInput = JOptionPane.showInputDialog («Введите число от 1 до 3»);

// Преобразуем строку в число в явном виде

userData = Integer.parseInt (userInput);


if ((userData> =1) & (userData <=3)) {

JOptionPane.showMessageDialog (null, «Вы ввели число " + userData);

}

else {

JOptionPane.showMessageDialog (null, «Вы ввели недопустимое число!»);

}

}

}

Отредактированная часть программы выделена жирным шрифтом. Как видите, получилась более компактная и универсальная конструкция. В условном операторе if использовано составное условие

(userData> =1) & (userData <=3)

Оно означает, что условие будет истинным, если значение переменной userData больше или равно единице И меньше или равно трем. В этом случае выводится диалоговое окно с сообщением об ошибке.

4.3 Операторы цикла

Операторы цикла предназначены для многократного выполнения блоков команд. В языке Java применяются операторы while, do… while и for.


4.3.1 Оператор цикла while

Шаблон оператора цикла while имеет вид:

while (условие) {

// Блок команд

}

При выполнении оператора цикла сначала проверяется условие. Если условие истинно, то выполняется блок команд в теле цикла. Затем условие проверяется снова. Если оно осталось истинным, вновь выполняется блок команд. Если условие стало ложным, то работа оператора цикла прекращается, и управление передается командам, следующим за циклом. Пример цикла while:

int a = 0;

while (a <10) {

System.out.println (a);

a++;

}

System.out.println («Выполнение цикла завершено»);

В этом примере цикл выполняется до тех пор, пока значение переменной a остается меньше 10. Вы уже знакомы с оператором автоинкремента (++), при помощи которого изменяется значение переменной. Если не менять значение переменной в теле цикла, то цикл будет выполняться вечно, потому что условие всегда будет истинным. Иногда такие «вечные циклы» бывают необходимы. Но в большинстве случаев это логическая ошибка, которая приводит к «зацикливанию» программы.

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


4.3.2 Оператор цикла do… while

Оператор do… while похож на оператор while, но имеет другую конструкцию, а блок команд будет выполнен как минимум один раз, потому что истинность условия проверяется после выполнения блока:

do {

// Блок команд

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

Перепишем предыдущий пример, используя оператор do… while:

int a = 0;

do {

System.out.println (a);

a++;

} while (a <10);

Программа из этого примера выводит в окно терминала числа от 0 до 9. Но если переменную a инициализировать значением 10 или больше, то цикл сработает один раз и выведет начальное значение переменной.


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

У оператора цикла for наиболее сложная конструкция, которая содержит все компоненты – инициализацию, условие, изменение:

for (инициализация; условие; инкремент/декремент) {

// Блок команд

}

Инициализация переменной цикла выполняется только один раз при обращении к оператору цикла. Затем проверяется истинность условия. Если оно возвращает значение true, то выполняется блок команд. Далее производится вычисление нового значения переменной цикла и вновь проверяется истинность условия. Если оно осталось истинным, то вновь выполняется блок команд. Цикл повторяется до тех пор, пока условие не перестанет быть истинным.