Массивы в Java
Массивы
Массивы
Массивы
Доступ к элементам массива
Объявление, инициализация, заполнение
Работа с одномерными массивами
Заполнение массива случайными числами
Печать массива
Класс java.util.Arrays
Пример java.util.Arrays
Задача №1
UNICODE-код символа
Задача №1: решение
Задача №3
Задача №3
Задача №4
Многомерные массивы
Печать двумерного массива
Просмотр массива с помощью foreach
Домашнее задание: Задача №1
Домашнее задание: Задача №2
539.26K
Category: programmingprogramming

Массивы в Java

1. Массивы в Java

2. Массивы

Массив – упорядоченный набор элементов одного типа.
Индекс – номер элемента в массиве.
2

3. Массивы

Массив
можно
представить, как набор
пронумерованных ячеек, в
каждую из которых можно
поместить данные, но
только
один
элемент
данных в одну ячейку.
Доступ
к
конкретной
ячейке
осуществляется
через её номер.
3

4. Массивы

Элементами могут быть значения простых и ссылочных
типов
Массивы сами по себе являются объектами и наследуют
от класса Object
Индекс
Значение
Индекс
0
1
2
3
4
5
6
7
Значение
-5
3
4
8
8
2
1
3
0
1
2
3
4
5
6
7
Китай
США
Россия
Канада
ЮАР
Франция
Южная Корея
Индия
4

5. Доступ к элементам массива

Доступ к элементам массива осуществляется по целочисленному индексу с
помощью оператора []
countries
Индекс
Значение
0
1
2
3
4
5
6
7
Китай
США
Россия
Канада
ЮАР
Франция
Южная Корея
Индия
2
countries[2]
Россия
5

6. Объявление, инициализация, заполнение

Объявление
int[] array;
int oldFishion[];
Инициализация
array = new int[20];
Заполнение
array[0] = 10;
array[1] = 15;
Способ «3 в 1»
byte[] b = {0, 2, 4, 8, 16, 32};
passToMethod(new long[] {1, 2, 3, 4, 5});
6

7. Работа с одномерными массивами

Форма объявления ссылки на массив с квадратными скобками после типа
элемента является более предпочтительной
Объект массива создается с помощью оператора new
Массив при этом заполняется значениями по умолчанию для типа его
элементов (0, false или null)
Нумерация в массивах начинается с 0
Длина массива хранится в публичном неизменяемом поле length
Изменить длину массива после создания его объекта невозможно
7

8. Заполнение массива случайными числами

java.util.Random rnd = new java.util.Random();
int array[] = new int[20];
for (int i = 0; i < array.length; i++)
array[i] = rnd.nextInt(100);
8

9. Печать массива

public class Main {
public static void main(String[] args) {
int array[] = new int[20];
for (int i = 0; i < array.length; i++)
System.out.printf("array[%d]=%d\n",i,array[i]);
}
}
9

10. Класс java.util.Arrays

Метод void sort(int[] myArray, int, int toIndex) сортирует
массив целых чисел или его часть (от fromIndex до
toIndex) по возрастанию.
Метод ищет int binarySearch(int[] myArray, int fromIndex,
int toIndex, int key) элемент key в уже отсортированном
массиве myArray или его части (от fromIndex до toIndex).
Если элемент найден, метод возвращает его индекс, если
нет -1.
Метод String toString(int[] myArray) преобразовывает
массив к строке.
10

11. Пример java.util.Arrays

import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] array = {1, 5, 4, 3, 7}; //объявляем и инициализируем массив
System.out.println(Arrays.toString(array));//печатаем массив
Arrays.sort(array); //сортируем массив
System.out.println(Arrays.toString(array));//отсортированный массив
int key = Arrays.binarySearch(array, 5); // ищем число 5
System.out.println(key);//распечатываем индекс числа 5
}
}
11

12. Задача №1

Сгенерировать массив строк из 36 элементов,
представляющий колоду игральных карт. Каждая карта
представлена мастью (♠, ♣, ♥, ♦) и достоинством (6, 7, 8, 9,
10, В, Д, К, Т). Например, «♣10».
а) вывести массив на консоль;
b) перемешать колоду.
12

13. UNICODE-код символа

char suits[] = {'\u2660', '♥' /*'\u2665'*/,
'\u2663', '\u2666'};
System.out.print(java.util.Arrays.toString(suits));
13

14. Задача №1: решение

char suits[] = {'\u2660', '♥' /*'\u2665'*/, '\u2663', '\u2666'};
String values[] = {"6", "7", "8", "9", "10", "В", "Д", "К", "T"};
String cards[] = new String[36];
int count = 0;
for (int i = 0; i < 4; i++)
for (int j = 0; j < values.length; j++)
cards[count++] = suits[i]+values[j];
System.out.println(java.util.Arrays.toString(cards));
Random rnd = new Random();
for (int i=0; i<cards.length*2; i++)
{
int k = rnd.nextInt(cards.length);
int m = rnd.nextInt(cards.length);
String temp = cards[m];
cards[m] = cards[k];
cards[k] = temp;
}
System.out.println(java.util.Arrays.toString(cards));
14

15. Задача №3

В странах Востока использовался календарь, представляющий собой 60-летнюю
циклическую систему. Каждый 60-летний цикл состоит из пяти 12-летних подциклов. В
каждом подцикле года носят названия животных: Крыса, Корова, Тигр, Заяц, Дракон,
Змея, Лошадь, Овца, Обезьяна, Петух, Собака и Свинья.
Кроме того, в названии года фигурируют цвета животных, которые связаны с пятью
элементами природы — Деревом (зеленый), Огнем (красный), Землей (желтый),
Металлом (белый) и Водой (черный).
В результате каждое животное (и его год) имеет символический цвет, причем цвет
этот часто совершенно не совпадает с его "естественной" окраской — Тигр может быть
черным, Свинья — красной, а Лошадь — зеленой.
Например, 1984 год — год начала очередного цикла — назывался годом Зеленой
Крысы. Каждый цвет в цикле (начиная с зеленого) "действует" два года, поэтому через
каждые 60 лет имя года (животное и его цвет) повторяется.
Составить программу, которая по заданному номеру года нашей эры n печатает его
название по описанному календарю в виде: "Крыса, Зеленый".
15

16. Задача №3

Используя датчик случайных чисел, заполнить массив из
двадцати элементов неповторяющимися числами.
16

17. Задача №4

Дан массив ненулевых целых чисел. Определить, сколько
раз элементы массива при просмотре от его начала меняют
знак. Например, в массиве 10, –4, 12, 56, –4, –89 знак
меняется 3 раза.
17

18. Многомерные массивы

Состоят из одномерных массивов, элементами которых
являются ссылки на массивы меньшей размерности
При создании объекта необязательно указывать все
размерности
Массив необязательно должен быть «прямоугольным»
// Автоматическая
int[][] twoDimArr = new int[10][5];
// Вручную
int[][] twoDimArr = new int[10][];
for (int i = 0; i < 10; i++)
twoDimArr[i] = new int[i];
// Явно
int[][] arr3 = { {0}, {0, 1}, {0, 2, 4} };
18

19. Печать двумерного массива

int[][] arr = { {30, 5}, {0, 1}, {10, 30, 20} };
for (int j = 0; j < arr.length; j++) {
for (int i = 0; i < arr[j].length; i++)
System.out.printf("%3d", arr[j][i]);
System.out.println();
}
19

20. Просмотр массива с помощью foreach

int[] array = new int[] { 1, 2, 3, 4, 5 };
for (int i : array){
System.out.println(i);
}
20

21. Домашнее задание: Задача №1

При выборе места строительства жилого комплекса при металлургическом
комбинате необходимо учитывать "розу ветров" (следует расположить жилой
комплекс так, чтобы частота ветра со стороны металлургического комбината
была бы минимальной).
Для этого в течение года проводилась регистрация направления ветра в
районе строительства. Данные представлены в виде массива, в котором
направление ветра за каждый день кодируется следующим образом:
1 — северный, 2 — южный, 3 — восточный, 4 — западный, 5 — северозападный, 6 — северо-восточный, 7 — юго-западный, 8 — юго-восточный.
Определить, как должен быть расположен жилой комплекс по отношению к
комбинату.
21

22. Домашнее задание: Задача №2

Пользователь с помощью консоли вводит количество строк и
количество столбцов двумерного массива. Разработать программу,
заполняющую массив натуральными числами
«змейкой» как
показано на рисунке нет.
22
English     Русский Rules