 # Introduction

Data in a table or a matrix can be represented using a two dimensional array.

The preceding ___ introduces how to use one-dimensional arrays to store linear collections of elements. You can use a two-dimensional array to store a matrix or a table. For example, the following table that lists the distances between cities can be stored using a two-dimensional array named `distances`. The two dimensional array equivalent:

```double[][] distances = {
{0, 983, 787, 714, 1375, 967, 1087},
{983, 0, 214, 1102, 1763, 1723, 1842},
{787, 214, 0, 661, 781, 810},
{714, 1102, 888, 0, 661, 781, 810},
{1375, 1763, 1549, 661, 0, 1426, 1187},
{967, 1723, 1548, 781, 1426, 0, 239},
{1087, 1842, 1627, 810, 1187, 239, 0},
};```

# Two Dimensional Array Basics

An element in a two dimensional array is accessed through a row and a column index.

How do you declare a variable for two dimensional arrays? How do you make a two dimensional array? How do you access elements in a two dimensional array? This section addresses these issues.

## Declaring Variables of and Making Two Dimensional Arrays

The syntax for declaring a two-dimensional array is:

`elementType[][] arrayRefVar;`

or

`elementType arrayRefVar[][]; // Allowed, but not preferred style of syntax`

As an example, here is how you would declare a two-dimensional array variable `matrix` of `int` values:

`int[][] matrix;`

or

`int matrix[][]; // Allowed, but not preferred style of syntax`

You can make a two dimensional array of 5-by-5 `int` values and assign it to `matrix` using this syntax:

`matrix = new int;`

Two subscripts are used in a two dimensional array, one for the rows and another for the columns. As in a one dimensional array, the index for each subscript is of the `int` type and starts from `0`, as show below in table (a). (a) The index of each subscript of a two dimensional array is an int value, starting from 0.

To assign the value 7 to a specific element at row `2` and column `1`, as shown in table (b), you can use the following syntax:

`matrix = 7;`

To make the a point clear: the 1st bracket [] is references the rows. The 2nd [] is references the columns.

*Note that a common mistake is to use `matrix[2, 1]` to access the element at row `2` and column `1`. In Java, each subscript must be enclosed in a pair of square brackets.

You can also use an array initializer to declare, make, and initialize a two dimensional array. For example, the following code:

```int[][] array = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9},
{10, 11, 12},
};```

makes an array with specified initial values, as shown in table (c). This is code is equivalent to:

```int[][] array = new int;
array = 1; array = 2; array = 3;
array = 4; array = 5; array = 6;
array = 7; array = 8; array = 9;
array = 10; array = 11; array = 12;```

## Obtaining the Lengths of Two-Dimensional Arrays

A two-dimensional array is actually an array in which each element is a one-dimensional array. The length of an array `x` is the number of elements in the array, which can be obtained using `x.length`. `x`, `x`,…, and `x[x.length-1]` are arrays. Their lengths can be obtained using `x.length`, `x.length`,…, and `x[x.length-1].length`.

In other words, Number of Rows`x.length` and Number of Columns = `x[x.length-1].length`.

For example, suppose `x = new int`, `x`, `x`, and `x` are one dimensional arrays and each contains four elements. `x.length` is `3`, and `x.length`, `x.length`, and `x.length` are `4`. Here’s a diagram showing the lengths of a two dimensional array: A two dimensional array is a one dimensional array in which each element is another one dimensional array.

## Ragged Arrays

Each row in a two dimensional array is itself an array. Thus, the rows can have different lengths. An array of this kind is known as a ragged array. Here is an example of making a ragged array: As you can see, `triangleArray.length` is 5, `traingleArray.length` is 4, `triangleArray` is 3, `triangleArray` is 2, and `triangleArray` is 1. If you don’t know the values in a ragged array in advance, but do know the sizes- say, the same as before- you can make a ragged array using the following syntax:

You can now assign values to the array. For example,

```triangleArray = 50;
traingleArray = 45;```

*Note that the syntax `new int[]` for making an array requires the first index to be specified. So `new int[][]` would be wrong.

◄◄◄BACK | NEXT►►►