Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб_4.doc
Скачиваний:
1
Добавлен:
11.09.2019
Размер:
58.88 Кб
Скачать

1.6Члены массива

Члены массива следующее:

public final поле length (длина), которое содержит число компонентов массива (length (длина) может быть только неотрицательной)

public метод clone, который переопределяет метод того же имени в классе Оbject и не генерирует контролируемых исключительных ситуаций.

Все члены, унаследованные от класса Object; только метод из Object не унаследуется clone.

Массив таким образом имеет те же самые методы что и следующий класс

class A implements Cloneable {

public final int length = X;

public Object clone() {

try {

return super.clone();

} catch (CloneNotSupportedException e) {

throw new InternalError(e.getMessage());

}

}

}

Метод сlone многомерного массива создает только одномерный новый массив. Подмассивы оказываются общими, как показано в примере программы :

class Test {

public static void main(String[] args) throws Throwable {

int ia[][] = { { 1 , 2}, null };

int ja[][] = (int[][])ia.clone();

System.out.print((ia == ja) + " ");

System.out.println(ia[0] == ja[0] && ia[1] == ja[1]);

}

}

Который выводит:

false true

и показывает, что массивы типа int[], которыми являются ia[0] и ja[0] - это один и тот же массив.

1.7Объекты Class для массивов

Каждый массив имеет связанный объект Class, разделяемый со всеми другими массивами, имеющими тот же самый тип компонент. Суперкласс типа-массива рассматривается как Object, что видно из следующего примера:

class Test {

public static void main(String[] args) {

int[] ia = new int[3];

System.out.println(ia.getClass());

System.out.println(ia.getClass().getSuperclass());

}

}

который печатает:

class [I

class java.lang.Object

где строка "[I" является сигнатурой типа время выполнения для объекта класса "массив с компонентами типа int" .

1.8Массив символов - не String

В языке Java, в отличие от Cи, массив типа char - не String , и ни строка, ни массив типа char не заканчиваются ‘\u0000‘ (символом NUL).

Объект String языка Ява не меняется, то есть никогда не меняется его содержание, в то время как массив типа char имеет непостоянные элементы. Метод toCharArray в классе String, возвращает массив символов, содержащий одинаковую последовательность символов, такую как String.

Пример программы, которая печатает максимальный элемент непустого массива.

Текст программы.

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<n; i++)

a[i] = Xterm.inputInt("Введите a[" + i + "] -> ");

int max = a[0];

for (i=1; i<n; i++)

if (a[i] > max)

max = a[i];

Xterm.println("Максимальный элемент массива = " + max);

}

}

Задачи для самостоятельной работы

2Задачи

  1. Создайте массив из всех чётных чисел от 2 до 20 и выведите элементы массива на экран сначала в строку, отделяя один элемент от другого пробелом, а затем в столбик (отделяя один элемент от другого началом новой строки). Перед созданием массива подумайте, какого он будет размера.

2 4 6 … 18 20 2 4 6 … 20

  1. Создайте массив из всех нечётных чисел от 1 до 99, выведите его на экран в строку, а затем этот же массив выведите на экран тоже в строку, но в обратном порядке (99 97 95 93 … 7 5 3 1).

  2. Создайте массив из 15 случайных целых чисел из отрезка [0;9]. Выведите массив на экран. Подсчитайте сколько в массиве чётных элементов и выведете это количество на экран на отдельной строке.

  3. Создайте массив из 8 случайных целых чисел из отрезка [1;10]. Выведите массив на экран в строку. Замените каждый элемент с нечётным индексом на ноль. Снова выведете массив на экран на отдельной строке.

  4. Создайте 2 массива из 5 случайных целых чисел из отрезка [0;5] каждый, выведите массивы на экран в двух отдельных строках. Посчитайте среднее арифметическое элементов каждого массива и сообщите, для какого из массивов это значение оказалось больше (либо сообщите, что их средние арифметические равны).

  5. Создайте массив из 4 случайных целых чисел из отрезка [10;99], выведите его на экран в строку. Определить и вывести на экран сообщение о том, является ли массив строго возрастающей последовательностью.

  6. Создайте массив из 20-ти первых чисел Фибоначчи и выведите его на экран. Напоминаем, что первый и второй члены последовательности равны единицам, а каждый следующий — сумме двух предыдущих.

  7. Создайте массив из 12 случайных целых чисел из отрезка [-15;15]. Определите какой элемент является в этом массиве максимальным и сообщите индекс его последнего вхождения в массив.

  8. Создайте два массива из 10 целых случайных чисел из отрезка [1;9] и третий массив из 10 действительных чисел. Каждый элемент с i-ым индексом третьего массива должен равняться отношению элемента из первого массива с i-ым индексом к элементу из второго массива с i-ым индексом. Вывести все три массива на экран (каждый на отдельной строке), затем вывести количество целых элементов в третьем массиве.

  9. Создайте массив из 11 случайных целых чисел из отрезка [-1;1], выведите массив на экран в строку. Определите какой элемент встречается в массиве чаще всего и выведите об этом сообщение на экран. Если два каких-то элемента встречаются одинаковое количество раз, то не выводите ничего.

  10. Пользователь должен указать с клавиатуры чётное положительное число, а программа должна создать массив указанного размера из случайных целых чисел из [-5;5] и вывести его на экран в строку. После этого программа должна определить и сообщить пользователю о том, сумма модулей какой половины массива больше: левой или правой, либо сообщить, что эти суммы модулей равны. Если пользователь введёт неподходящее число, то программа должна требовать повторного ввода до тех пор, пока не будет указано корректное значение.

  11. Программа должна создать массив из 12 случайных целых чисел из отрезка [-10;10] таким образом, чтобы отрицательных и положительных элементов там было поровну и не было нулей. При этом порядок следования элементов должен быть случаен (т. е. не подходит вариант, когда в массиве постоянно выпадает сначала 6 положительных, а потом 6 отрицательных чисел или же когда элементы постоянно чередуются через один и пр.). Вывести полученный массив на экран.

  12. Пользователь вводит с клавиатуры натуральное число большее 3, которое сохраняется в переменную n. Если пользователь ввёл не подходящее число, то программа должна просить пользователя повторить ввод. Создать массив из n случайных целых чисел из отрезка [0;n] и вывести его на экран. Создать второй массив только из чётных элементов первого массива, если они там есть, и вывести его на экран.

  1. Разработать программу обработки информации от товарах , поступающих в магазин.

Каждый товар имеет: наименование, количество, стоимость. Ввести данные с клавиатуры.

Вывести информацию о количестве соответствующего товара на текущий момент. Если повторно вводится товар, количество товара суммируется, а стоимость устанавливается по вновь введенным данным

Вывести наименование товара с максимальным количеством.

  1. Разработать программу обработки информации об оценках студентов, обучающихся в группе.

Информация о студенте: ФИО, стипендия, оценки. Ввести данные с клавиатуры. Если повторно вводится информация о студенте, оценки добавляются, а стипендия устанавливается по вновь введенным данным.

Вывести информацию об объеме стипендии (общая сумма) в группе.

Вывести информацию о студентах, не получающих стипендию.

Вывести информацию о студентах с максимальной средней оценкой.

  1. Разработать программу обработки информации книгах библиотеки.

Информация о книге: ФИО автора, название, стоимость, количество. Ввести данные с клавиатуры. Если повторно вводится информация о книге, количество добавляются, а стоимость устанавливается по вновь введенным данным.

Вывести информацию о количестве книг (общее количество) в библиотеке.

Вывести информацию о книгах, автора, фамилия которого вводится пользователем.

Вывести информацию о книгах с максимальной стоимостью.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]