Similar presentations:
Многомерные массивы. Занятие 9
1.
ЗАНЯТИЕ 9МНОГОМЕРНЫЕ
МАССИВЫ
2.
ПОВТОРЕНИЕ• Массив — это структура данных, в которой хранятся элементы одного типа. Его
можно представить, как набор пронумерованных ячеек, в каждую из которых
можно поместить какие-то данные (один элемент данных в одну ячейку). Доступ к
конкретной ячейке осуществляется через её номер. Номер элемента в массиве
также называют индексом.
3.
ПОВТОРЕНИЕ4.
ПОВТОРЕНИЕ5.
ПОВТОРЕНИЕ• длина массива — это количество элементов, под которое рассчитан массив. Длину
массива нельзя изменить после его создания.
6.
ПОВТОРЕНИЕ• 1) Создать массив строк с помощью сканера;
• 2) Заполнить массив с помощью сканера;
• 3) Вывести значение массива.
7.
ДВУМЕРНЫЕ МАССИВЫ• Самый распространенный пример двумерного массива - это матрица
В матрице есть строки и столбцы. На пересечении их
стоит определенное значение.
8.
ДВУМЕРНЫЕ МАССИВЫ• Класс TwoDimensionalArray.java – создание и заполнение
9.
ДВУМЕРНЫЕ МАССИВЫ• Важно понимать, что двумерный массив – это массив массивов, то есть в каждой
его ячейке находится ссылка на некий массив. Т.е если говорить абстрактно, то это
таблица, у которой задано количество строк (первое измерение) и количество
столбцов (второе измерение).
10.
ДВУМЕРНЫЕ МАССИВЫ. ДЛИНА• Чтобы получить длину одномерного массива (то есть, количество элементов в нём),
можно использовать переменную length. То есть, если мы определим массив
• int a[] = {1,2,3}, то операция a.length возвращает 3.
• А как узнать длину тогда двумерного массива?
• Сделаем следующее:
11.
ДВУМЕРНЫЕ МАССИВЫ. ДЛИНА• Таким образом, эта операция выводит количество строк в массиве. А как получить
количество столбцов? Если мы имеем дело с прямоугольными двумерными
массивами (то есть такими, у которых все строки одинаковой длины), то можно
применить операцию twoDimArray[0].length или вместо нулевого элемента (по
сути — нулевой строки) — любой другой существующий. Мы можем так поступить,
потому что в Java двумерный массив — это массив массивов, и нулевой элемент
twoDimArray[0] — это массив длины 4.
• Если массив не прямоугольный, то используем циклы
12.
• Класс TwoDimensionalArray.java – вывод• эту операцию (вывод) логичнее всего делать так: сначала выводим нулевую строку
поэлементно, затем — вторую и так далее. Чаще всего в Java вывод двумерного
массива реализуют с помощью двух вложенных циклов.
13.
ДВУМЕРНЫЕ МАССИВЫ• Почему вывод такой?
двумерный массив состоит из строк и столбцов. Каждая ячейка такого массива - это пересечение
какой-то строки и столбца.
1. Так что первый цикл for перебирает каждую строку двумерного массива (которая содержит
какое-то количество столбцов).
2. А второй цикл for перебирает столбцы в этой строке. Таким образом можно заполнить
значением каждый элемент двумерного массива.
14.
ДВУМЕРНЫЕ МАССИВЫ• 1) Вывести в консоль массив {{5,7,3,17}, {7,0,1,12}, {8,1,2,3}};
• 2) Пользователь вводит размерность двумерного массива (квадратный, т.е число
строк=числу столбцов) и заполняет (через сканнер)
• 3) Пользователь вводит размерности двумерного массива (прямоугольный, все
строки одинаковой длины !=числу столбцов) и заполняет (через сканнер)
15.
ОБЪЯВЛЕНИЕ МНОГОМЕРНЫХ МАССИВОВJava-разработчики иногда пользуются двумерными массивами, гораздо реже —
трёхмерными, ну а массивы ещё большей размерности — чрезвычайно редки.
16.
ПРИМЕНЕНИЕ17.
ПРАКТИКА• 1) Нарисовать в консоли шахматную доску (8x8) (нижняя левая клетка шахматной
доски окрашена в чёрный цвет, следующая за ней — в белый, как и та, что над ней.
Итак, цвет меняется каждый раз при переходе на соседнюю по стороне ячейку) Т.е
результат должен быть следующий:
18.
ПРАКТИКА• 2) Вывести таблицу умножения используя двумерный массив
• 3) Есть матрица. Найти в ней введенное пользователем число и вывести номер
столбца и строки
• 4) Есть матрица. Посчитать сумму элементов в каждой строке
• 5) Есть матрица (квадратная). Посчитать сумму элементов, расположенных на
главной диагонали:
• Т.е дано
Главная диагональ – {1,3,9,3}
19.
ДЗ (+ПРАКТИКА)• 1)* Создать Jagged Array (т.е число элементов в каждом под массиве двумерного
массива может отличаться) с помощью пользователя и сканера. Пример такого
массива: int[][] myArray = {{1,2,3}, {56},{1,2,6,1,3,1,3},{2,2}};
• 2)**Нарисовать бабочку