Чтение онлайн

на главную - закладки

Жанры

Программирование на Java
Шрифт:

Пример использования цикла for:

... for(counter=0;counter<10;counter++) {

System.out.println("Counter is "

+ counter);

}

В данном примере предполагается, что переменная counter была объявлена ранее. Цикл будет выполнен 10 раз и будут напечатаны значения счетчика от 0 до 9.

Разрешается определять переменную прямо в предложении:

for(int cnt = 0;cnt < 10; cnt++) {

System.out.println("Counter is " + cnt);

}

Результат

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

Любая часть конструкции for может быть опущена. В вырожденном случае мы получим оператор for с пустыми значениями

for(;;) {

...

}

В данном случае цикл будет выполняться бесконечно. Эта конструкция аналогична конструкции while(true) {

}

. Условия, в которых она может быть применена, мы рассмотрим позже.

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

for(i = 0, j = 0; i<5; i++, j+=2) {

...

}

Использование такой конструкции вполне правомерно.

Операторы break и continue

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

Оператор continue

Оператор continue может использоваться только в циклах while, do, for. Если в потоке вычислений встречается оператор continue, то выполнение текущей последовательности операторов (выражений) должно быть прекращено и управление будет передано на начало блока, содержащего этот оператор.

...

int x = (int)(Math.random*10);

int arr[] = {....}

for(int cnt=0;cnt<10;cnt++) {

if(arr[cnt] == x) continue;

...

}

В данном случае, если в массиве arr встретится значение, равное x, то выполнится оператор continue и все операторы до конца блока будут пропущены, а управление будет передано на начало цикла.

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

Рассмотрим пример:

public class Test {

public Test {

}

public static void main(String[] args) {

Test t = new Test;

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

if(i % 2 == 0) continue;

System.out.print(" i=" + i);

}

}

}

В

результате работы на консоль будет выведено:

i=1 i=3 i=5 i=7 i=9

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

Оператор break

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

public class Test {

public Test {

}

public static void main(String[] args) {

Test t = new Test;

int [] x = {1,2,4,0,8};

int y = 8;

for(int cnt=0;cnt < x.length;cnt++) {

if(0 == x[cnt]) break;

System.out.println("y/x = " + y/x[cnt]);

}

}

}

На консоль будет выведено:

y/x = 8

y/x = 4

y/x = 2

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

В качестве аргумента break может быть указана метка. Как и в случае с continue, нельзя указывать в качестве аргумента метки блоков, в которых оператор break не содержится.

Именованные блоки

В реальной практике достаточно часто используются вложенные циклы. Соответственно, может возникнуть ситуация, когда из вложенного цикла нужно прервать внешний. Простое использование break или continue не решает этой задачи, однако в Java можно именовать блок кода и явно указать операторам, к какому из них относится выполняемое действие. Делается это путем присвоения метки операторам do, while, for.

Метка - это любая допустимая в данном контексте лексема, оканчивающаяся двоеточием.

Рассмотрим следующий пример:

...

int array[][] = {...};

for(int i=0;i<5;i++) {

for(j=0;j<4; j++) {

...

if(array[i][j] == caseValue) break;

...

}

}

...

В данном случае при выполнении условия будет прервано выполнение цикла по j, цикл по i продолжится со следующего значения. Для того, чтобы прервать выполнение обоих циклов, используется метка:

...

int array[][] = {:..};

Поделиться:
Популярные книги

Собрание сочинений Том 11

Лесков Николай Семенович
11. Собрание сочинений в одиннадцати томах
Проза:
русская классическая проза
6.25
рейтинг книги
Собрание сочинений Том 11

Дюна: Дом Атрейдесов

Андерсон Кевин Джей
1. Прелюдия к Дюне
Фантастика:
научная фантастика
7.00
рейтинг книги
Дюна: Дом Атрейдесов

Экспансия — II

Семенов Юлиан Семенович
11. Штирлиц
Детективы:
исторические детективы
7.78
рейтинг книги
Экспансия — II

Том 11. Письма 1836-1841

Гоголь Николай Васильевич
11. Полное собрание сочинений в четырнадцати томах
Проза:
русская классическая проза
5.00
рейтинг книги
Том 11. Письма 1836-1841

Газлайтер. Том 26

Володин Григорий Григорьевич
26. История Телепата
Фантастика:
боевая фантастика
попаданцы
аниме
5.25
рейтинг книги
Газлайтер. Том 26

Тринадцатый VI

NikL
6. Видящий смерть
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Тринадцатый VI

Суть науки Каббала. Том 2

Лайтман Михаэль Семенович
Научно-образовательная:
прочая научная литература
религиоведение
5.00
рейтинг книги
Суть науки Каббала. Том 2

Битва в пути

Николаева Галина
Проза:
советская классическая проза
6.60
рейтинг книги
Битва в пути

Смерть в сновидениях

Ноар Кейла
Религия и эзотерика:
эзотерика
5.00
рейтинг книги
Смерть в сновидениях

Дюна. Батлерианский джихад

Андерсон Кевин Джей
1. Легенды Дюны
Фантастика:
научная фантастика
7.29
рейтинг книги
Дюна. Батлерианский джихад

Сыскари

Макеев Алексей Викторович
Детективы:
полицейские детективы
6.20
рейтинг книги
Сыскари

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

Игнатьев Михаил
Дом и Семья:
кулинария
6.25
рейтинг книги
Практические основы кулинарного искусства. Краткий популярный курс мясоведения

Рубеж

Дяченко Марина и Сергей
Фантастика:
фэнтези
8.29
рейтинг книги
Рубеж

Технология XSLT

Валиков Алексей Н.
Компьютеры и Интернет:
программирование
5.00
рейтинг книги
Технология XSLT