Двумерные и многомерные массивы
- 1. Какие массивы называются двумерными и многомерными?
- 2. Пример описания и использования двумерных массивов в программе.
- 3. Пример описания двумерного массива альтернативными вариантами
- 4. Как осуществляется инициализация двумерного массива? Пример
- 5. Пример объявления двумерного массива, с разным числом элементов в одной строке (разной размерностью второго измерения).
- 6. Пример объявления многомерных массивов
- 7. Пример инициализации многомерного массива
- 8. Пример обнуления двумерной матрицы вещественных чисел размером 5×5
- 9. Пример поиска заданного элемента в матрицы целых чисел размером 10×10
- 10. Пример поиска максимального значения в матрице вещественных чисел
- 11. Пример вычисления суммы элементов двумерной матрицы вещественных чисел
- 12. Пример объявления и использования двумерного массива строк
- 13. Пример объявления и использования двумерного массива классов
- Связанные темы
Поиск на других ресурсах:
1. Какие массивы называются двумерными и многомерными?
Общие понятия о массивах и использование одномерных массивов подробно описаны здесь.
Массив считается двумерным, если для определения местоположения элемента в массиве нужно указать значения двух индексов. Двумерный массив ассоциируется с таблицей. Если количество столбцов и строк массива (таблицы) одинаковое, то массив еще называют матрицей.
Массив считается многомерным, если для определения местоположения элемента в массиве нужно указать значения трех и больше индексов.
2. Пример описания и использования двумерных массивов в программе.
// матрица целых чисел размером 3*4 int Matr[][]; Matr = new int[3][4]; // заполнение ячеек матрицы Matr[0][2] = 23; Matr[0][0] = -220; Matr[2][3] = 380; // матрица вещественных чисел размером 2*3 float[][] MatrF = new float[2][3]; MatrF[0][2] = 9.88f; MatrF[0][0] = -33.8329f;
3. Пример описания двумерного массива альтернативными вариантами
В Java двумерный массив можно описывать разными способами. В данном примере показаны разные варианты описания двумерного массива целых чисел размером 2×3.
Вариант 1.
// объявление матрицы размером 2*3 int[] Matr[] = new int[2][3];
Вариант 2.
int[][] Matr = new int[2][3];
Вариант 3.
int[][] Matr = new int[2][3];
Вариант 4.
int[][] Matr; Matr = new int[2][3];
Вариант 5.
int[] Matr[]; Matr = new int[2][3];
Вариант 6.
int Matr[][]; Matr = new int[2][3];
Вариант 7.
int Matr[][] = new int[2][]; Matr[0] = new int[3]; Matr[1] = new int[3];
Вариант 8.
int[][] Matr = new int[2][]; Matr[0] = new int[3]; Matr[1] = new int[3];
Вариант 9.
int[] Matr[] = new int[2][]; Matr[0] = new int[3]; Matr[1] = new int[3];
4. Как осуществляется инициализация двумерного массива? Пример
Чтобы осуществить инициализацию двумерного массива нужно инициализатор каждого измерения взять в отдельный ряд фигурных скобок.
В следующем примере объявляется двумерный массив вещественных чисел с именем X. Размер массива 2×3.
// инициализация двумерного массива размером 2*3 float X[][] = { { 0.1f, 0.3f, 1.2f }, { 1.3f, 2.8f, 3.2f } };
5. Пример объявления двумерного массива, с разным числом элементов в одной строке (разной размерностью второго измерения).
В данном примере объявляется двумерный массив, в котором число элементов в каждой строке есть разным. Затем этот массив заполняется значениями как показано на рисунке.
Рисунок. Массив, в соответствии с условием задачи
// объявление массива, в котором // 3 строки с разной размерностью второго измерения long M[][] = new long[3][]; M[0] = new long[2]; // 2 элемента в нулевой строке M[1] = new long[4]; // 4 элемента в первой строке M[2] = new long[3]; // 3 элемента во второй строке M[0][0] = 10l; M[0][1] = 350l; M[1][0] = 25l; M[1][1] = 45l; M[1][2] = 85l; M[1][3] = 1200l; M[2][0] = 55l; M[2][1] = 450l; M[2][2] = 2500l;
6. Пример объявления многомерных массивов
Многомерные массивы используют 3 и больше индексов для доступа к элементам массива.
// объявление массива размером 3*2*4 int M[][][] = new int[3][2][4]; // использование массива M[1][1][2] = 23; M[0][0][1] = -12; // объявление массива размером 5*10*15 double[][][] D; D = new double[5][10][15]; D[3][7][11] = -29.33;
7. Пример инициализации многомерного массива
В данном примере инициализируется массив размером 2×3×3.
// инициализация массива размером 2*3*3 byte B[][][] = { { { 0, 1, 2 }, { 1, 2, 3 }, { 3, 4, 5 } }, { { 1, 2, 3 }, { 2, 3, 4 }, { 5, 6, 7 } } };
8. Пример обнуления двумерной матрицы вещественных чисел размером 5×5
// обнулить матрицу размером 5*5 double Matrix[][] = new double[5][5]; for (int i=0; i<5; i++) for (int j=0; j<Matrix[i].length; j++) Matrix[i][j]=0.0;
9. Пример поиска заданного элемента в матрицы целых чисел размером 10×10
// поиск элемента в матрице short Matrix[][] = new short[10][10]; boolean f_is; short num; // искомый элемент // ввод значения num // ... f_is = false; // сначала принимаем, что элемента в матрице нет for (int i=0; i<10; i++) for (int j=0; j<Matrix[i].length; j++) if (Matrix[i][j]==num) f_is = true; // элемент найден
10. Пример поиска максимального значения в матрице вещественных чисел
// поиск максимума в матрице float Matrix[][] = new float[10][10]; float max; // искомое максимальное значение // ... max = Matrix[0][0]; // принять, что max - один из элементов матрицы for (int i=0; i<10; i++) for (int j=0; j<Matrix[i].length; j++) if (Matrix[i][j]>max) max = Matrix[i][j];
11. Пример вычисления суммы элементов двумерной матрицы вещественных чисел
// сумма элементов матрицы float Matrix[][] = new float[10][10]; float sum; // искомая сумма // ... sum = 0; for (int i=0; i<10; i++) for (int j=0; j<Matrix[i].length; j++) sum = sum + Matrix[i][j];
12. Пример объявления и использования двумерного массива строк
В языке Java для работы с строками введен специальный класс String. В данном примере приведены разные варианты объявления, инициализации и использования двумерного массива строк.
// объявление двумерного массива строк String M1[][] = new String[5][5]; // создание переменной типа массив // запись информации в массив строк for (int i=0; i<5; i++) for (int j=0; j<M1[i].length; j++) M1[i][j] = "Item #" + i + j; // глубокое копирование массивов с помощью метода clone() String M2[][] = M1.clone(); // массивы M1 и M2 указывают на разные участки памяти // объявление и инициализация массива строк размером 3*3 String M3[][] = { { "Item-00", "Item-01", "Item-02" }, { "Item-10", "Item-11", "Item-12" }, { "Item-20", "Item-21", "Item-22" } }; // поверхностное копирование String M4[][]; // описание переменной типа двумерный массив строк M4 = M1; // массивы M1 и M4 указывают на один и тот же участок памяти // изменение в массиве M1 приведет к изменению в массиве M4 и наоборот M1[1][4] = "1111"; // M4[1][4] = "1111" M4[1][4] = "2222"; // M1[1][4] = "2222"
13. Пример объявления и использования двумерного массива классов
В данном примере объявлен двумерный массив классов размером 3×4. Процесс объявления переменной проходит в несколько этапов:
- объявить переменную типа двумерный массив класса MyPoint;
- выделить память под общую ссылку на классы размером 3×4;
- выделить память под каждый элемент массива, который есть классом.
// объявление переменной mp типа двумерный массив MyPoint[][] mp; // выделение памяти для массива классов размером 3*4 mp = new MyPoint[3][4]; // выделение памяти для каждого элемента массива (класса) for (int i=0; i<3; i++) for (int j=0; j<mp[i].length; j++) mp[i][j] = new MyPoint(); // использование массива в программе for (int i=0; i<3; i++) for (int j=0; j<mp[i].length; j++) mp[i][j].SetXY(i, j); int d; d = mp[2][2].GetY(); // d = 2 d = mp[1][2].GetX(); // d = 1