Электронная библиотека книг Александра Фролова и Григория Фролова.
Shop2You.ru Создайте свой интернет-магазин
Библиотека
Братьев
Фроловых
[Назад]

Библиотека примеров приложений Java

Оглавление
Базовые типы

Замещающие типы
Без указателей
Массивы
Структурное программи-
рование

Обработка исключений
Возбуждение исключений
Классы обработки исключений
Блок finally
Строки String
Класс Math
Класс Vector
Класс Stack
Словарь на базе Hashtable
Словарь на базе Properties
Цифровые часы
Собственный класс
Наследование классов

Интерфейсы

Назад Вперед

1.5. Операторы структурного программирования

В примере демонстрируются различные приемы работы с одномерными, многомерными и несимметричными массивами.

Исходный текст примера

Архив проекта для Java WorkShop 2.0

Немного теории

В Java вы можете использовать те же самые операторы структурного программирования, что и языке программирования С, а именно:

Оператор Для чего применяется
if, else Выполнение тех или иных строк программы в зависимости от выполнения логического условия, указанного в операторе if
for Оператор цикла. Проверка условия завершения, а также итерация выполняется в начале цикла
while Оператор цикла с проверкой условия завершения, выполнямой в начале цикла
do-while Оператор цикла с проверкой условия завершения, выполнямой в конце цикла
continue Продолжение выполнения цикла с его начала
break Прерывание выполнения цикла
switch Переключатель. Используется для исполнения того или иного фрагмента кода в зависимости от значения переменной или выражения

Описание примера

В нашем примере мы демонстрируем использование всех перечисленных выше операторов структурного программирования.

Оператор if-else

В начале фрагмента программы, демонстрирующего применение оператора if-else, мы создаем три переменных:

int i = 5;
int j = 6;
boolean f;

Программа вычисляет выражение (i - j)*2 и сравнивает его с нулем в операторе if:

if((i - j) * 2 > 0)
  System.out.println("(" + i + " - " 
    + j + ") * 2 > 0"); 
else
{
  System.out.println("(" + i + " - " 
    + j + ") * 2 <= 0"); 
      
  f = (i == i);
  if(f)
  {
    System.out.println("i == i"); 
  }
}

В зависимости от знака выражения на консоли отображается одна из двух строк. В нашем случае выражение имеет отрицательный знак (оно равно -2), поэтому на консоль будет выведена следующая строка:

(5 - 6) * 2 <= 0

Второй оператор if выполняется только в том случае, если выражение (i - j)*2 меньше нуля. В этом операторе анализируется содержимое логической переменной f.

Если эта переменная равна true, то на консоль выводится текстовая строка, показанная ниже:

i == i

Переменная f вычисляется следующим образом:

f = (i == i);

Здесь в переменную f записывается результат операции сравнения переменной i самой с собой. Он всегда равен true.

Оператор for

Цикл for в нашей программе выглядит следующим образом:

for(i = 0; i < 10; i++)
{
  System.out.print(i + " "); 
}

Здесь переменная i используется в качестве переменной цикла. Перед началом цикла ей присваивается нулевое значение.

Затем содержимое i сравнивается с числом 10. Если i меньше 10, тело цикла выполняется один раз. Вслед за этим значение i увеличивается на единицу.

Далее i вновь сравнивается с числом 10. Когда i превысит это значение, работа цикла будет прервана.

Таким образом, параметр цикла анализируется перед выполнением тела цикла, а модифицируется после выполнения этого тела.

Вот что приведенный выше фрагмент программы выведет на консоль:

0 1 2 3 4 5 6 7 8 9

Оператор break

Оператор break может прервать выполнение цикла в любой момент. Например, в нашей программе мы прерываем работу цикла, когда значение переменной i становится больше пяти:

for(i = 0; i < 10; i++)
{
  if(i > 5)
    break;
  System.out.print(i + " "); 
}

В результате на консоль будут выведены цифры от 0 до 5:

0 1 2 3 4 5

Оператор while

Оператор while проверяет условие завершения цикла перед выполнением тела цикла:

i = 0;
while(i < 10)
{
  System.out.print(i + " "); 
  i++;    
}

В отличие от оператора for оператор while никак не изменяет значение переменной цикла, поэтому мы должны позаботиться об этом сами.

Перед тем как приступить к выполнению цикла, мы устанавливаем начальное значение параметра цикла i, равное нулю.

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

Цикл будет прерван, как только значение переменной i превысит 10.

Оператор continue

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

i = 0;
while(true)
{
  i++;
  System.out.print(i + " "); 
      
  if(i < 9)
    continue;
  else
    break;
}

Если в ходе выполнения цикла значение переменной i не достигло девяти, цикл возобновляет свою работу с самого начала (то есть с оператора i++).

Когда указанное значение будет достигнуто, выполнение цикла будет прервано оператором break.

Оператор do-while

При использовании оператора do-while условие завершения цикла проверяется после выполнения его тела:

i = 0;
do
{
  System.out.print(i + " "); 
  i++;    
} while(i < 10)

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

Как только это значение достигнет 10, цикл будет прерван.

Оператор switch

В нашей программе оператор switch используется для выбора одной из нескольких строк, отображаемых на консоли. Выбор делается в зависимости от значения переменной i:

i = 2;
    
switch(i)
{
  case 1:
  {
    System.out.println("case 1");
    break; 
  }
  case 2:
  {
    System.out.println("case 2"); 
    break; 
  }
  case 3:
  {
    System.out.println("case 3"); 
    break; 
  }
  default:
  {
    System.out.println("default"); 
    break; 
  }
}

Так как содержимое переменной i равно двум, на консоли всегда будет отображаться строка "case 2". Вы можете попробовать другие значения самостоятельно, отредактировав соответствующим образом исходный текст примера.

Полный листинг

Ниже мы показали полный листинг, который наша программа выводит на консоль в процессе своей работы:

if-else
(5 - 6) * 2 <= 0
i == i

for
0 1 2 3 4 5 6 7 8 9 

for-break
0 1 2 3 4 5 

while
0 1 2 3 4 5 6 7 8 9 

while-continue
1 2 3 4 5 6 7 8 9 

do-while
0 1 2 3 4 5 6 7 8 9 

switch
case 2

Назад Вперед

[Назад]