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] = T r’,
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]
Copyright 1985-2003 Microsoft Corp.
C:\>cd progs
C:\progs>jauac PascalTriangle.jaua
C:\progs>java PascalTriangle 1
Рис. 1.4.Вывод треугольника Паскаля в окно Command Prompt
Заключение
Уф-ф-ф! Вот вы и одолели базовые конструкции языка. Раз вы добрались до этого места, значит, умеете уже очень много. Вы можете написать программу на Java, отладить ее, устранив ошибки, и выполнить. Вы способны запрограммировать любой не слишком сложный вычислительный алгоритм, обрабатывающий числовые данные.
Теперь можно перейти к вопросам создания сложных производственных программ. Такие программы требуют тщательного планирования. Сделать это помогает объектноориентированное программирование, к которому мы теперь переходим. Но сначала проверьте свои знания и ответьте, пожалуйста, на контрольные вопросы.
Вопросы для самопроверки
1. Из чего состоит программа на языке Java?
2. Как оформляется метод обработки информации в Java?
3. Каков заголовок у метода main() ?
4. Как записать комментарии к программе?
5. Что такое аннотация?
6. В каких системах счисления можно записывать целые константы?
7. Какое количество выражено числом 032?
8. Какое количество выражено числом 0х2С?
9. Как записать символ "наклонная черта"?
10. Как записать символ "обратная наклонная черта"?
11. Каков результат операции 3.45 % 2.4?
12. Что получится в результате операций 12 | 14 & 10?
13. Что даст в результате операция 3 << 4?
14. Можно ли записать циклы внутри условного оператора?
15. Можно ли использовать оператор continue в операторе варианта?
16. Можно ли использовать оператор break с меткой в операторе варианта?
Читать дальше
Конец ознакомительного отрывка
Купить книгу