Читаем Философия Java3 полностью

Массив заполняется уже знакомым циклом for, потому что для его заполнения должны использоваться индексы. Упрощенный синтаксис используется в следующей команде:

for(float X f)

Эта конструкция определяет переменную х типа float, после чего последовательно присваивает ей элементы f.

Любой метод, возвращающий массив, может использоваться с данной разновидностью for. Например, класс String содержит метод toCharArray(), возвращающий массив char; следовательно, перебор символов строки может осуществляться так:

//: control/ForEachString.java

public class ForEachString {

public static void main(String[] args) {

for(char с : "An African Swallow".toCharArray() ) System.out.print(c + " ");

}

} /* Output:

An African Swallow *///.-

Как будет показано далее, «синтаксис foreach» также работает для любого объекта, поддерживающего интерфейс Iterable.

Многие команды for основаны на переборе серии целочисленных значений:

for (int i = 0; i < 100; i++)

В таких случаях «синтаксис foreach» работать не будет, если только вы предварительно не создадите массив int. Для упрощения этой задачи я включил в библиотеку net.mindview.util.Range метод range(), который автоматически генерирует соответствующий массив:

//: control/ForEachlnt.java

import static net.mindview.util.Range.*,

import static net.mindview.util Print.*;

public class ForEachlnt {

public static void main(String[] args) { for(int i : range(10)) // 0..9


printnbCi +

v).

printO;


for(int

i : range(5,

10)) // 5..9


printnb(i +


printO;


for(int

i : range(5.

20. 3)) // 5


printnbCi +


printO:


}

} /* Output: 0 12 3 4 5 6 7 8 9 5 6 7 8 9 5 8 11 14 17 *///:-

Обратите внимание на использование printnb() вместо print(). Метод printnb() не выводит символ новой строки, что позовляет построить строку по фрагментам.

return

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

У ключевого слова return имеется два предназначения: оно указывает, какое значение возвращается методом (если только он не возвращает тип void), а также используется для немедленного выхода из метода. Метод test() из предыдущего примера можно переписать так, чтобы он воспользовался новыми возможностями:

//: control/IfElse2.java

import static net.mindview.util.Print.*:

public class IfElse2 {

static int test(int testval. int target) { if(testval <@062> target)

return +1; else if(testval < target) return -1;

else

return 0; // Одинаковые значения

}

public static void main(String[] args) { prmt(test(10. 5)); print(test(5. 10)): print(test(5. 5));

}

} /* Output: 1 -1 0

В данном случае секция else не нужна, поскольку работа метода не продолжается после выполнения инструкции return.

Если метод, возвращающий void, не содержит команды return, такая команда неявно выполняется в конце метода. Тем не менее, если метод возвращает любой тип, кроме void, проследите за тем, чтобы каждая логическая ветвь возвращала конкретное значение.

break и continue

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

Следующая программа показывает пример использования команд break и continue внутри циклов for и while:

//: control/BreakAndContinue.java // Применение ключевых слов break и continue import static net.mindview.util.Range.*;

public class BreakAndContinue {

public static void main(String[] args) { for(int i = 0: i < 100; i++) {

if(i == 74) break; // Выход из цикла

if(i % 9 != 0) continue; // Следующая итерация

System.out print(i + " ");

}

System out.printlnO; // Использование foreach: for(int i : range(lOO)) {

if(i == 74) break; // Выход из цикла

if(i % 9 != 0) continue; // Следующая итерация

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

}

System.out.println(); int i = 0;

// "Бесконечный цикл": while(true) { i++;

int j = i * 27,

if(j == 1269) break; // Выход из цикла

if(i % 10 != 0) continue; 11 Возврат в начало цикла

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

}

}

} /* Output:

0 9 18 27 36 45 54 63 72 0 9 18 27 36 45 54 63 72 10 20 30 40 *///:-

В цикле for переменная i никогда не достигает значения 100 — команда break прерывает цикл, когда значение переменной становится равным 74. Обычно break используется только тогда, когда вы точно знаете, что условие выхода из цикла действительно достигнуто. Команда continue переводит исполнение в начало цикла (и таким образом увеличивает значение i), когда i не делится без остатка на 9. Если деление производится без остатка, значение выводится на экран.

Второй цикл for демонстрирует использование «синтаксиса foreach» с тем же результатом.

Перейти на страницу:

Похожие книги

Access 2002: Самоучитель
Access 2002: Самоучитель

В книге рассматривается широкий круг вопросов, связанных с использованием программной среды Access 2002, которая является составной частью пакета Office 2002 и предназначена для создания банка данных в самых различных предметных областях.Подробно описывается методика проектирования объектов базы данных (таблицы, формы, отчеты, страницы доступа к данным, запросы, модули).Детально обсуждаются вопросы создания интегрированной базы данных в единой среде Access 2002: формирование БД с нуля, конвертирование в программную среду баз данных, созданных в ином программном окружении – Clarion, FoxPro.Особое внимание уделяется формированию разнообразных запросов к интегрированной базе данных Access 2002 с использованием языков программирования SQL, VBA и макросов.Приводятся общие сведения о возможностях языка обмена данными между различными компьютерами и приложениями (XML). Описываются возможности использования гиперссылок, связывающих базу данных с другими программными продуктами. Объясняется, как можно работать с базой данных Access 2002 без установки ее на компьютер, используя технологию ODBC (Open Data Base Connectivity). В приложениях приводятся количественные параметры Access 2002 и связанная с этой СУБД терминология.Предлагаемая книга будет полезна специалистам, занимающимся практической разработкой банков данных и приложений на их основе, а также студентам вузов, изучающим информатику.

Павел Юрьевич Дубнов

Программирование, программы, базы данных / ОС и Сети / Книги по IT