## Two-dimensional and multi-dimensional arrays

**1. What arrays are called two-dimensional and multi-dimensional?****2. Example of defining and using of two-dimensional arrays in the program.****3. Example of declaring a two-dimensional array by using the alternative variants.****4. How is implemented the initialization of the two-dimensional array? Example****5. Example of declaration a two-dimensional array, with a different number of elements in a single row (a different dimensionality of the second dimension).****6. Example of declaring multidimensional arrays.****7. Example of initialization of a multidimensional array****8. An example of zeroing of a two-dimensional matrix of real numbers, size 5*5****9. Example of searching a given element in the array of integers of size 10×10****10. Example of searching the maximum value in a matrix of real numbers.****11. Example of calculating the sum of the items of two-dimensional matrix of real numbers****12. An example of declaring and using of two-dimensional array of strings.****13. An example of declaring and using of two-dimensional array of classes.**

##### 1. What arrays are called two-dimensional and multi-dimensional?

General concepts about **arrays** and the use of one-dimensional arrays are described in detail **here**.

The array is considered two-dimensional, if to determine the item location in the array, you need to specify the values of the two indexes. The two-dimensional array is associated with the table. If the number of rows and columns of the array (table) is equally, then the array is called the matrix.

The array is considered multi-dimensional, if to determine the item location in the array, you need to specify the values of the three and more indexes.

##### 2. Example of defining and using of two-dimensional arrays in the program.

// integer matrix of size 3 * 4intMatr[][]; Matr =new int[3][4]; // filling of matrix cells Matr[0][2] = 23; Matr[0][0] = -220; Matr[2][3] = 380; // matrix of real numbers, size 2 * 3float[][] MatrF =new float[2][3]; MatrF[0][2] = 9.88f; MatrF[0][0] = -33.8329f;

##### 3. Example of declaring a two-dimensional array by using the alternative variants.

In Java, a two-dimensional array can be described in different ways.

This example shows different variants of describing the two-dimensional array of integers of size 2×3.

**Variant 1.**

// declaring the matrix of size 2 * 3int[] Matr[] =new int[2][3];

**Variant 2.**

int[][] Matr =new int[2][3];

**Variant 3.**

int[][] Matr =new int[2][3];

**Variant 4.**

int[][] Matr; Matr =new int[2][3];

**Variant 5.**

int[] Matr[]; Matr =new int[2][3];

**Variant 6.**

intMatr[][]; Matr =new int[2][3];

**Variant 7.**

intMatr[][] =new int[2][]; Matr[0] =new int[3]; Matr[1] =new int[3];

**Variant 8.**

int[][] Matr =new int[2][]; Matr[0] =new int[3]; Matr[1] =new int[3];

**Variant 9.**

int[] Matr[] =new int[2][]; Matr[0] =new int[3]; Matr[1] =new int[3];

##### 4. How is implemented the initialization of the two-dimensional array? Example

To initialize the two-dimensional array, you need the initializer of each measurement take between the braces.

The following example declares a two-dimensional array of real numbers with the name *X*. The array size 2×3.

// initialization the two-dimensional array of size 2 * 3floatX[][] = { { 0.1f, 0.3f, 1.2f }, { 1.3f, 2.8f, 3.2f } };

##### 5. Example of declaration a two-dimensional array, with a different number of elements in a single row (a different dimensionality of the second dimension).

In this example, a two-dimensional array is declared in which the number of elements in each row is various. Then, the array filled with the values as shown in the figure.

Figure. The array, according to the condition of the problem

// declaration of the array in which 3 rows have different dimensionslongM[][] =new long[3][]; M[0] =new long[2]; // 2 elements in the zero row M[1] =new long[4]; // 4 elements in the first row M[2] =new long[3]; // 3 elements in the second row 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. Example of declaring multidimensional arrays.

Multidimensional arrays use 3 or more indexes to access the array elements.

// declare the array of size 3 * 2 * 4intM[][][] =new int[3][2][4]; // use the array M[1][1][2] = 23; M[0][0][1] = -12; // declare the array of size 5*10*15double[][][] D; D =new double[5][10][15]; D[3][7][11] = -29.33;

##### 7. Example of initialization of a multidimensional array

In this example, the size of the array is initialized of size 1×2×3.

// initialization of array of size 1 * 2 * 3byteB[][][] = { { { 0, 1, 2 }, { 1, 2, 3 }, { 3, 4, 5 } }, { { 1, 2, 3 }, { 2, 3, 4 }, { 5, 6, 7 } } };

##### 8. An example of zeroing of a two-dimensional matrix of real numbers, size 5*5

// zeroing of matrix of size of 5 * 5doubleMatrix[][] =new double[5][5];for(inti=0; i<5; i++)for(intj=0; j<Matrix[i].length; j++) Matrix[i][j]=0.0;

##### 9. Example of searching a given element in the array of integers of size 10×10

// searching for the item in the matrixshortMatrix[][] =new short[10][10];booleanf_is;shortnum; // the required element // enter the value of num // ... f_is =false; // first we assume that there is no element in the matrixfor(inti=0; i<10; i++)for(intj=0; j<Matrix[i].length; j++)if(Matrix[i][j]==num) f_is =true; // item is found

##### 10. Example of searching the maximum value in a matrix of real numbers.

// search for the maximum in matrixfloatMatrix[][] =new float[10][10];floatmax; // the required maximum value // ... max = Matrix[0][0]; // assume that max - one of the elements of the matrixfor(inti=0; i<10; i++)for(intj=0; j<Matrix[i].length; j++)if(Matrix[i][j]>max) max = Matrix[i][j];

##### 11. Example of calculating the sum of the items of two-dimensional matrix of real numbers

// the sum of the elements of the matrixfloatMatrix[][] =new float[10][10];floatsum; // the required sum // ... sum = 0;for(inti=0; i<10; i++)for(intj=0; j<Matrix[i].length; j++) sum = sum + Matrix[i][j];

##### 12. An example of declaring and using of two-dimensional array of strings.

In the Java language to work with the strings implemented a special class String.

This example shows the different variants of the declaration, initialization and using of a two-dimensional array of strings.

// declare the two-dimensional array of strings String M1[][] =newString[5][5]; // creating an variable of array type // put the information in an array of rowsfor(inti=0; i<5; i++)for(intj=0; j<M1[i].length; j++) M1[i][j] = "Item #" + i + j; // deep copy of arrays using the clone() method String M2[][] = M1.clone(); // arrays M1 and M2 point to different memory areas // declare and initialize an array of strings of size 3 * 3 String M3[][] = { { "Item-00", "Item-01", "Item-02" }, { "Item-10", "Item-11", "Item-12" }, { "Item-20", "Item-21", "Item-22" } }; // shallow copy String M4[][]; // the description of a variable of type two-dimensional array of strings M4 = M1; // arrays M1 and M4 point to the same memory location // change in array M1 leads to a change in the array M4 and vice versa M1[1][4] = "1111"; // M4[1][4] = "1111" M4[1][4] = "2222"; // M1[1][4] = "2222"

##### 13. An example of declaring and using of two-dimensional array of classes.

In this example, declared a two-dimensional array of class of size 3×4.

Process of variable declaration takes place in several stages:

- declare a variable of the type of two-dimensional array of MyPoint class;
- allocate memory for a general reference to the classes of size 3×4;
- allocate memory for each element of the array, which is the class.

// declare the variable mp of two-dimensional array type MyPoint[][] mp; // memory allocation for the array of classes of size 3 * 4 mp =newMyPoint[3][4]; // memory allocation for each item of array (class)for(inti=0; i<3; i++)for(intj=0; j<mp[i].length; j++) mp[i][j] =newMyPoint(); // array use in the programfor(inti=0; i<3; i++)for(intj=0; j<mp[i].length; j++) mp[i][j].SetXY(i, j);intd; d = mp[2][2].GetY(); // d = 2 d = mp[1][2].GetX(); // d = 1