Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Итерация в многомерных массивах




Итерация в многомерных массивах

Усовершенствованная версия цикла for применима также и к многомерным массивам.

Однако следует помнить, что в Java многомерные массивы состоят из массивов массивов. Это важно при выполнении итерации в многомерном массиве, поскольку результат каждой итерации – следующий массив, а не отдельный элемент. Более того, тип итерационной переменной цикла for должен быть совместим с типом получаемого массива. Например, в случае двумерного массива итерационная переменная должна быть ссылкой на одномерный массив.

В общем случае при использовании цикла “for-each” для выполнения итерации в массиве размерности N получаемые объекты будут массивами размерности N-1. Дабы понять, что из этого следует, рассмотрим следующую программу. В ней вложенные циклы for служат для получения упорядоченных по строкам элементов двумерного массива.

// Использование цикла for в стиле for-each применительно к двумерному массиву.

class ForEach3 {

public static void main(String args[]) {

int sum = 0;

int nums[][] = new int[3][5];

// присвоение значений элементам массива nums

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

for(int j=0; j < 5; j++)

nums[i][j] = (i+1)*(j+1);

// использование цикла for в стиле for-each для отображения

// и суммирования значений

for(int x[]: nums) {

for(int y: x) {

System. out. println(" Значение равно: " + y);

sum += y;

}

}

System. out. println(" Сумма: " + sum);

}

}

Эта программа генерирует следующий вывод:

Значение равно: 1

Значение равно: 2

Значение равно: 3

Значение равно: 4

Значение равно: 5

Значение равно: 2

Значение равно: 4

Значение равно: 6

Значение равно: 8

Значение равно: 10

Значение равно: 3

Значение равно: 6

Значение равно: 9

Значение равно: 12

Значение равно: 15

Сумма: 90

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

for(int x[]: nums) {

Обратите внимание на способ объявления переменной x. Эта переменная – ссылка на одномерный массив целочисленных значений. Это необходимо потому, что результат выполнения каждой итерации цикла for – следующий массив в массиве nums, начиная с массива, указанного элементом nums[0]. Затем внутренний цикл for выполняет итерацию по каждому из этих массивов, отображая значения каждого из элементов.

Использование усовершенствованного цикла for

Поскольку каждый оператор for в стиле “for-each” может выполнять цикл по элементам массива только последовательно, начиная с первого и заканчивая последним, может показаться, что его применение ограничено. Однако это не так. Множество алгоритмов требуют использования именно этого механизма. Одним из наиболее часто используемых алгоритмов является поиск. Например, следующая программа использует цикл for для поиска значения в неупорядоченном массиве. Поиск прекращается после обнаружения искомого значения.

// Поиск в массиве с применением цикла for в стиле for-each.

class Search {

public static void main(String args[]) {

int nums[] = { 6, 8, 3, 7, 5, 6, 1, 4 };

int val = 5;

boolean found = false;

// использование цикла for в стиле for-each для в nums значения val

for(int x: nums) {

if(x == val) {

found = true;

break;

}

}

if(found)

System. out. println(" Значение найдено! " );

}

}

В данном случае выбор стиля “for-each” для цикла for полностью оправдан, поскольку поиск в неупорядоченном массиве предполагает последовательный просмотр каждого из элементов. (Конечно, если бы массив был упорядоченным, можно было бы использовать бинарный поиск, реализация которого требовала бы применения другого стиля цикла. )

К другим типам приложений, которым применение циклов в стиле “for-each” предоставляет преимущества, относятся вычисление среднего значения, отыскание минимального или максимального значения в наборе, поиск дубликатов и т. п.

Вложенные циклы

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

// Циклы могут быть вложенными.

class Nested {

public static void main(String args[]) {

int i, j;

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

for(j=i; j< 10; j++)

System. out. print(". " );

System. out. println();

}

}

}

Эта программа генерирует следующий вывод:

..........

.........

........

.......

......

.....

....

...

..

.

Операторы перехода

В Java определены три оператора перехода: break, continue и return. Они передают управление другой части программы. Рассмотрим каждый из них.

Кроме операторов перехода, рассмотренных в этом разделе, Java поддерживает еще один способ изменения порядка выполнения инструкций программы: обработку исключений. Обработка исключений предоставляет структурированный метод, посредством которого программа может обнаруживать и обрабатывать ошибки времени выполнения. Для поддержки этого метода служат ключевые слова try, catch, throws и finally. По сути, механизм обработки ошибок позволяет программе выполнять нелокальные ветви. Поскольку тема обработки исключений очень обширна, она рассмотрена отдельно.

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...