Лабораторная работа №3. Использование массивов в языке Java Цель работы: ознакомиться с организацией одномерных массивов в языке Java и научиться использовать алгоритмы для работы с одномерными массивами. Теоретическая часть Большинство языков высокого уровня – включая Java – позволяют определять МАССИВЫ, т.е. индексированный набор данных определенного типа, имеющих общее имя. Пример использования массива: Результатом выполнения программы будет: 0*0=0 1*1=1 2*2=4 3*3=9 4*4=16 Выражение int array[] = new int[NUM]; объявляет array как массив переменных типа int c объемом памяти, выделяемым для пяти целых переменных (т.к. NUM равен 3). Индексы массива всегда целые и начинаются с нуля. К первой переменной массива можно обращаться как к array[0], второй – как к array[1], к последней – как к array[4]. Также допустимо объявить массив следующим образом: int[] array; 1 Заполнение массива значениями: 1–й способ основан на вводе данных с клавиатуры: int n; Scanner in = new Scanner(System.in); System.out.println("Введите количество элементов массива:"); n = in.nextInt(); System.out.println("Введите элементы массива:"); int[] nums = new int[n]; for (int i = 0; i < nums.length; i++) { nums[i] = in.nextInt(); } Для получения консольного ввода в классе System определен объект in. Однако непосредственно через объект System.in не очень удобно работать, поэтому, как правило, используют класс Scanner, который, в свою очередь использует System.in. Так как класс Scanner находится в пакете java.util, то мы вначале его импортируем. Для создания самого объекта Scanner в его конструктор передается объект System.in. После этого мы можем получать вводимые значения. Например, чтобы получить введенное число, используется метод in.nextInt(), который возвращает введенное с клавиатуры целочисленное значение. Класс Scanner имеет еще ряд методов, которые позволяют получить введенные пользователем значения: next(): считывает введенную строку до первого пробела nextLine(): считывает всю введенную строку nextInt(): считывает введенное число int nextDouble(): считывает введенное число double hasNext(): проверяет, было ли введено слово hasNextInt(): проверяет, было ли введено число int hasNextDouble(): проверяет, было ли введено double Кроме того, класс Scanner имеет еще ряд методов nextByte/ nextShort/ nextFloat/ nextBoolean, которые по аналогии с nextInt считывают данные определенного типа данных. 2–й способ основан на задании значений непосредственно в программе: int[] array = new int [] {2,4,5,6,7}; 2 Для построчного вывода элементов можно использовать следующий код: System.out.println("Элементы массива:"); for (int i = 0; i < nums.length; i++) { System.out.println(nums[i]); } System.out.println(); Общая постановка задачи 1. Для выполнения лабораторной работы составить алгоритм, представить его в виде блок-схемы и разработать методы на языке Java для решения Вашего варианта задания. Номер варианта совпадает с номером в журнале. 2. В класс, разработанный предыдущих лабораторных работах добавить новые поля: количество элементов одномерного массива N, исходный целочисленный массив X, массив результатов расчета Y (если предусмотрен в варианте задания). 3. В класс, разработанный в 1-й и во 2-й лабораторных работах добавить три метода: метод ввода данных исходного одномерного массива X, метод нахождения массива Y (если предусмотрен в варианте задания) или метод нахождения требуемых по заданию величин и метод вывода значений исходного массива X и массива Y на консоль. 4. Массив X вывести на экран в следующем виде: x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15 x16 x17 x18 x19 x20 5. Оформить отчет по лабораторной работе, включающий титульный лист; цель работы; постановку задачи для Вашего варианта; блок-схему алгоритма; текст программы на языке Java; скриншоты результатов выполнения тестовых примеров; ответы на контрольные вопросы. 3 Список индивидуальных данных 1. В заданном массиве Х, состоящем из 20 элементов определить и вывести на экран первый отрицательный элемент и его порядковый номер. Если все элементы положительны, выдать соответствующее сообщение. 2. Задан целочисленный массив Х из 20 элементов. Определить и вывести на экран элементы, кратные трем и их порядковые номера или вывести сообщение, если таковых нет. 3. В заданном массиве Х, состоящем из 20 элементов определить и вывести на экран первый элемент, удовлетворяющий условию 0<xi<1 и его порядковый номер. Если такой элемент отсутствует выдать соответствующее сообщение. 4. В заданном массиве Х, состоящем из 20 элементов определить и вывести на экран наибольший из элементов, удовлетворяющих условию 1<xi<2 и его порядковый номер. Если такие элементы отсутствуют выдать соответствующее сообщение. 5. В заданном массиве Х, состоящем из 20 элементов определить и вывести на экран наибольший элемент, а затем заменить его значением суммы элементов, предшествующих ему. 6. В заданном массиве Х, состоящем из 20 элементов определить и вывести на экран количество положительных, отрицательных и равных нулю элементов. 7. Задан целочисленный массив Х из 20 элементов. Из этого массива переписать в массив Y подряд все положительные элементы и определить наименьший из них. 8. Задан целочисленный массив Х из 20 элементов. Определить и вывести на экран сумму тех элементов, которые нечетны и отрицательны. 9. Задан целочисленный массив Х из 20 элементов. Из этого массива переписать в массив Y той же размерности подряд все отрицательные элементы, а оставшиеся места заполнить единицами. 10. Задан целочисленный массив Х из 20 элементов. В каждую ячейку массива Y той же размерности записать соответствующий элемент массива Х, если он неположителен и единицу в противном случае. 11. Задан целочисленный массив Х из 20 элементов. Из этого массива переписать в массив Y подряд первые пять четных элементов. 12. Задан действительный массив Х из 20 элементов. Получить массив Y, элементы которого определяются как (xi+xi+1)/2. 13. Задан целочисленный массив Х из 20 элементов. Определить количество соседств двух положительных и двух отрицательных чисел. 14. Задан целочисленный массив Х из 20 элементов. Определить сумму элементов, имеющих четные индексы и являющихся нечетными числами. 4 15. Задан массив Х натуральных чисел из 20 элементов. Определить количество элементов, являющихся удвоенными нечетными числами. 16. Задан массив Х натуральных чисел из 20 элементов. Определить произведение элементов, дающих при делении на 7 остаток 1, 2 или 5. 17. Задан массив Х натуральных чисел из 20 элементов. Определить наименьший из элементов, удовлетворяющих условию xi<i2 и его порядковый номер. 18. Задан действительный массив Х из 20 элементов. Определить количество отрицательных элементов в первых десяти элементах массива и произведение положительных – во вторых десяти элементах. 19. Задан целочисленный массив Х из 20 элементов. Заменить в массиве все числа меньшие двух на –1, а числа большие десяти на 1. 20. Задан действительный массив Х из 20 элементов. Получить произведение отрицательных и сумму положительных элементов. 21. Задан целочисленный массив Х из 20 элементов. Получить массив Y, в который записать в обратном порядке сначала элементы массива Х, имеющие четный индекс, затем нечетный. 22. Задан целочисленный массив Х из 20 элементов. Определить наименьший и наибольший элементы массива и поменять их местами соответственно с первым и последним элементами. 23. Задан действительный массив Х из 20 элементов, отличных от нуля. Определить произведение его элементов и если оно отрицательно, то приравнять нулю первые десять элементов массива, если положительно – то вторые десять. 24. Задан массив Х натуральных чисел из 20 элементов. Определить элементы, удовлетворяющие условию xi=xi-1+xi-2, и их порядковые номера. 25. Задан целочисленный массив Х из 20 элементов. Получить массив Y, в который записать сперва все нечетные, а затем все четные элементы массива Х в том же порядке. Контрольные вопросы к защите 1. 2. 3. 4. 5. Дайте определение массива. Как производится доступ к отдельным элементам массива? Какие способы заполнения массива значениями Вы знаете? Как определяется символьный массив? Какие ограничения накладываются на индексы массивов? 5 Библиографический список 1. Информационные материалы с официального сайта разработчиков. [электронный ресурс] http://www.oracle.com/technetwork/java/javase/downloads/index.html 2. Вязовик, Н.А. Программирование на Java. [электронный ресурс] http://www.intuit.ru/studies/courses/16/16/info. 3. Монахов В.В. Язык программирования Java и среда NetBeans: [электронный ресурс] http://www.intuit.ru/studies/courses/569/425/info 4. Баженова И. Ю. Язык программирования Java: Электронный ресурс / М.: Диалог-МИФИ, 2008. - 254 с. Режим доступа: http://biblioclub.ru/index.php?page=book&id=54745 5. Хабрахабр. Статьи по Java. [электронный ресурс] . – URL: http://habrahabr.ru/search/?q=Java 6. IBM developerWorks. Технологи Java [электронный ресурс] . – URL: http://www.ibm.com/developerworks/ru/views/java/libraryview.jsp 7. Журнал JavaWorld. [электронный ресурс на английском языке] . – URL: http://www.javaworld.com/ 8. Java - Все для студента [электронный ресурс] . – URL: http://www.twirpx.com/library/comp/java/ 6