Читать «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] и т. д.
Массив символов в 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]