Читать «Java 7 (Наиболее полное руководство)» онлайн - страница 37

Ильдар Шаукатович Хабибуллин

double aMin = a[0], aMax = aMin; for (int i = 0; i < a.length; i++){ if (a[i] < aMin) aMin = a[i]; if (a[i] > aMax) aMax = a[i];

}

double range = aMax - aMin;

Здесь вычисляется диапазон значений массива. Заметьте, что цикл можно было бы начать с 1.

Ситуация, когда надо перебрать все элементы массива в порядке возрастания их индексов, как в предыдущем примере, встречается очень часто. Начиная с версии Java SE 5, для таких случаев в язык Java введена упрощенная форма оператора цикла for, так называемый оператор "for-each", уже упоминавшийся ранее. Вот как можно записать предыдущий пример оператором "for-each":

double aMin = a[0], aMax = aMin; for (double x : a){

if (x < aMin) aMin = x; if (x > aMax) aMax = x;

}

double range = aMax - aMin;

Обратите внимание на то, что в цикле for сразу определяется переменная x того же типа, что и элементы массива. Эта переменная принимает последовательно значения всех элементов массива от первого элемента до последнего.

Элементы массива — это обыкновенные переменные своего типа, с ними можно производить все операции, допустимые для этого типа: (a[2] + a[4]) / a[0] и т. д.

Знатокам C/C++

Массив символов в Java не является строкой, даже если он заканчивается нуль-символом

T\u0000 T.

Многомерные массивы

Элементами массивов в Java могут быть массивы. Можно объявить ссылку:

char [][] c;

что эквивалентно

char [] c[];

или char c[] [];

Затем определяем внешний массив и его размерность:

c = new char[3][];

Становится ясно, что с — массив, состоящий из трех элементов-массивов. Теперь определяем его элементы-массивы:

c[0] = new char[2]; c[1] = new char[4]; c[2] = new char[3];

После этих определений переменная c.length равна 3, c[0] .length равна 2, c[1] .length равна 4 и c[2]. length равна 3.

Наконец, задаем начальные значения c[0][0] = Ta% c[0][1] = Tr% c[1][0] = Tr’,

c[1] [1] = TaT, c[1] [2] = TyT и т. д.

Замечание

Двумерный массив в Java не обязан быть прямоугольным.

Описания можно сократить:

int[] [] d = new int[3] [4];

А начальные значения задать так:

int[][] inds = {{1, 2, 3}, {4, 5, 6}};

В листинге 1.6 приведен пример программы, вычисляющей первые 10 строк треугольника Паскаля, заносящей их в треугольный массив и выводящей его элементы на экран. Рисунок 1.4 показывает вывод этой программы.

Листинг 1.6. Треугольник Паскаля

class PascalTriangle{

public static final int LINES = 10; // Так определяются константы

public static void main(String[] args){ int [][] p = new int [LINES] [ ] ; p[0] = new int[1];

System.out.println(p[0][0] = 1); p[1] = new int[2]; p[1] [0] = p[1] [1] = 1;

System.out.println(p[1][0] + " " + p[1][1]); for (int i = 2; i < LINES; i++){ p[i] = new int[i+1];

System.out.print((p[i][0] = 1) + " "); for (int j = 1; j < i; j++)

System.out.print((p[i][j] = p[i-1][j-1] + p[i-1][j]) + " "); System.out.println(p[i][i] = 1);

}

}

\ Command Prompt

10 10 5 115 20 15 6 1 21 35 35 21 7 1 28 56 70 56 28 8 1 36 84 126 126 84 36 9 1

Microsoft Windows [Uersion 5.2.3790]