| Массивы в языке Java |
|
|
Saturday, 08 April 2006 | Сайт www.ctc.msiu.ru для раздела Ученье – свет Язык Java, так же как и многие другие языки, позволяет работать с массивами элементов различных типов. Массив (array) используют, когда возникает необходимость хранить несколько однотипных значений, например, 50 целых чисел или 100 наименований книг, так как было бы неудобно использовать в таких случаях различные имена для всех этих переменных. Рассмотрим следующую простейшую задачу на работу с массивом целых чисел.
Напишите программу, которая вводит с клавиатуры массив целых чисел, печатает его, а затем инвертирует (то есть меняет местами первый элемент с последним, второй – с предпоследним и так далее) и вновь печатает.
Текст программы.
public class InvArr {
public static void main(String[] args) throws Exception {
int n, i, a[];
n = Xterm.inputInt("Введите длину массива n -> ");
a = new int[n];
for (i=0; i a[i] = Xterm.inputInt("Введите a[" + i + "] -> ");
Xterm.print("Введенный массив a =");
for (i=0; i Xterm.print(" " + a[i]);
Xterm.print("\nИнвертированный массив a =");
for (i=0; i int j = a[i]; a[i] = a[n-1-i]; a[n-1-i] = j;
}
for (i=0; i Xterm.print(" " + a[i]);
Xterm.print("\n");
}
}
Как видно из текста этой программы, для того чтобы завести массив, необходимо объявить его и зарезервировать затем память для его элементов с помощью оператора new. В этом случае все они будут автоматически проинициализированы нулевыми значениями. Массив из трех целых чисел, содержащий величины 3, 7 и 11, можно задать так:
int a[] = {3, 7, 11};
Элементы любого массива нумеруются с нуля, а для доступа к -му его элементу используется выражение a[i]. Язык Java отслеживает все попытки обратиться к несуществующему элементу массива -- при попытке работать, скажем с a[n], возникает исключительная ситуация (выход индекса за границу массива), так как последний элемент имеет индекс n-1, а не n.
В качестве более содержательного комментария к программе инвертирования массива заметим, что выполнение цикла, переставляющего элементы, завершается, как только будет достигнута середина массива. Если условие продолжения цикла i Рассмотрим еще одну задачу.
Напишите программу, печатающую максимальный элемент непустого массива.
Текст программы. public class MaxArr {
public static void main(String[] args) throws Exception {
int n, i, a[];
n = Xterm.inputInt("Введите длину массива n -> ");
a = new int[n];
for (i=0; i a[i] = Xterm.inputInt("Введите a[" + i + "] -> ");
int max = a[0];
for (i=1; i if (a[i] > max)
max = a[i];
Xterm.println("Максимальный элемент массива = " + max);
}
}
В заключение рассмотрим задачу, включающую дополнительное требование на структуру программы.
Напишите программу, печатающую количество максимальных элементов непустого массива; можно использовать только один цикл.
Текст программы. public class NumMaxArr {
public static void main(String[] args) throws Exception {
int n, i, a[];
n = Xterm.inputInt("Введите длину массива n -> ");
a = new int[n];
int max = Integer.MIN_VALUE;
int nMax = 0;
for (i=0; i
a[i] = Xterm.inputInt("Введите a[" + i + "] -> ");
if (a[i] > max) {
max = a[i];
nMax = 1;
} else if (a[i] == max)
nMax += 1;
}
Xterm.println("Количество макс. элементов = " + nMax);
}
}
Использование константы Integer.MIN_VALUE позволяет избежать необходимости присваивания переменной max значения нулевого элемента массива до начала циклического просмотра остальных элементов.
Можно заметить, что при решении этой задачи массив по-существу не используется. Если в этой программе удалить описание массива a, заменив его на описание целой переменной a, и произвести замену всех вхождений выражения a[i] на a, то программа останется работающей.
Источник публикации – здесь
|