Министерство образования Республики Беларусь
Учреждение образования
БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
ИНФОРМАТИКИ И РАДИОЭЛЕКТРОНИКИ
Факультет информационных технологий и управления
Кафедра вычислительных методов и программирования
ОТЧЕТ
по лабораторной работе
«КРАТКИЙ ОБЗОР ЯЗЫКА JAVA. ВВЕДЕНИЕ В ООП В JAVA»
Студент гр. 024403 Папета М.В.
Проверил Богданова Е.А.
Минск 2022
Цель выполнения лабораторной работы
Изучить ряд основных языковых средств языка Java.
Формулировка индивидуального задания
20. Создать класс Array (массив), в котором реализуются методы для работы с одномерными массивами: методы поиска максимального и минимального элемента в массиве; метод, меняющий местами минимальное и максимальное значения в массивах; метод нахождения среднего значения элементов массива. Память под массивы выделять динамически. Использовать конструктор с параметрами, конструктор без параметров, конструктор копирования. Деструктор должен освобождать память, выделенную под массивы. Создать методы доступа к полям класса.
Ответы на контрольные вопросы
1. Покажите два способа объявления одномерного массива, состоящего из 12 элементов типа double.
double[] myArray;
myArray = new double[12];
или
double arrayName[];
myArray = new double[12];
2. Покажите все варианты, которыми можно воспользоваться для инициализации элементов одномерного массива целочисленными значениями от 1 до 5.
1)
int[] digits = new int[5]; digits[0] = 1; digits[1] = 2; digits[2] = 3; digits[3] = 4; digits[4] = 5;
2)
int[] digits = new int[] { 1 , 2 ,3 ,4 ,5};
3)
int[] digits = { 1 , 2 ,3 ,4 ,5};
4)
int[] digits = new int[5]; int a =1; for (int i = 0; i < digits.length; i ++) { digits[i] = a; a++; }
3. Напишите программу, в которой массив используется для нахождения среднего арифметического десяти значений типа double. Используйте любые десять чисел.
public static void MiddleInt() { double summ = 0; for (int i = 0; i < arr.length; i++) { summ += arr[i]; } System.out.println("Middle Int:" + summ/size); }
Метода для массива, находящий среднеарифмитическое любого количества значений в массиве.
4. Напишите программу, которая сортирует массив символьных строк в лексикографическом порядке по убыванию и по возрастанию. Продемонстрируйте ее работу.
Результат работы:
5. В чем состоит разница между методами indexOf() и lastIndexOf() класса String?
Метод indexOf() выполняет поиск от начала массива к концу, а метод lastIndexOf() – от конца к началу.
6. Перепишите приведенную ниже последовательность операторов, воспользовавшись тернарным оператором. if(x < 0) у= 10; else у= 20; 23
String y = (x < 0) ? 10 : 20;
8. Является ли ошибкой превышение верхней границы массива?
Да
9. Является ли ошибкой использование отрицательных значений индекса для доступа к элементам массива?
Да
10. Можно ли управлять оператором switch с помощью объектов типа String? Если да, то напишите пример такого использования.
Да
String a = "cat"; switch(a) { case "cat": System.out.println("CAT"); break; case "notCat": System.out.println("NOT CAT"); break; }
Листинг
import java.util.Scanner; /*. Создать класс Array (массив), в котором реализуются методы для работы с одномерными массивами: методы поиска максимального и минимального элемента в массиве; метод, меняющий местами минимальное и максимальное значения в массивах; метод нахождения среднего значения элементов массива. Память под массивы выделять динамически. Использовать конструктор с параметрами, конструктор без параметров, конструктор копирования. Деструктор должен освобождать память, выделенную под массивы. Создать методы доступа к полям класса*/ public class Main { public static void main(String[] args) { Array number = new Array(3); Filler(); int[] digits = new int[5]; int a =1; for (int i = 0; i < digits.length; i ++) { digits[i] = a; a++; } for (int i = 0; i < digits.length; i ++) { System.out.println(digits[i]); } Array.printArray(); Task(); } public static void Filler() { Array.pushback(4); Array.pushback(3); Array.pushback(1); Array.pushback(7); Array.pushback(9); Array.pushback(6); } public static void Task() { Array.MaxMin(); Array.MaxMinSwap(); Array.MiddleInt(); } } public class Array { private static int [] arr; private static int size; public Array(int [] arr) { arr = new int[arr.length]; this.arr = arr; } public Array(int length) { arr = new int[length]; } public Array(Array obj) { this.arr = obj.arr; } public Array() { arr = new int[5]; } public static void MaxMin() { int min = arr[0], max = arr[0]; for (int i = 0; i < size; i++) { if (arr[i] > max) max = arr[i]; if (arr[i] < min) min = arr[i]; } System.out.println("Max element:" + max); System.out.println("Min element:" + min); } public static void MaxMinSwap() { int min = arr[0], max = arr[0]; int i_min=0, i_max=0; for (int i = 0; i < size; i++) { if (arr[i] > max) { max = arr[i]; i_max = i; } if (arr[i] < min) { min = arr[i]; i_min = i; } } int temp; temp = arr[i_min]; arr[i_min] = arr[i_max]; arr[i_max] = temp; printArray(); } public static void MiddleInt() { double summ = 0; for (int i = 0; i < size; i++) { summ += arr[i]; } System.out.println("Middle Int:" + summ/size); } public static void pushback(int element) { if (arr.length == size) { int newArr[] = new int[2 * size]; for (int i = 0; i < size; i++) { newArr[i] = arr[i]; } arr = newArr; } arr[size++] = element; } public static void printArray() { for (int i = 0; i < size; i++) { System.out.print(arr[i]); System.out.print(" "); } System.out.println(); } public static int[] getArr() { return arr; } public static int getSize() { return size; } public static void setArr(int[] arr) { Array.arr = arr; } public static void setSize(int size) { Array.size = size; } }
Скриншот работы программы