Table of Contents

# 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:

1 2 3 4 5 6 7 8 9 |
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:

1 |
elementType[][] arrayRefVar; |

or

1 |
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:

1 |
int[][] matrix; |

or

1 |
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:

1 |
matrix = new int[5][5]; |

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).

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:

1 |
matrix[2][1] = 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:

1 2 3 4 5 6 |
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:

1 2 3 4 5 |
int[][] array = new int[4][3]; array[0][0] = 1; array[0][1] = 2; array[0][2] = 3; array[1][0] = 4; array[1][1] = 5; array[1][2] = 6; array[2][0] = 7; array[2][1] = 8; array[2][2] = 9; array[3][0] = 10; array[3][1] = 11; array[3][2] = 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[0]`

, `x[1]`

,…, and `x[x.length-1]`

are arrays. Their lengths can be obtained using `x[0].length`

, `x[1].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[3][4]`

, `x[0]`

, `x[1]`

, and `x[2]`

are one dimensional arrays and each contains four elements. `x.length`

is `3`

, and `x[0].length`

, `x[1].length`

, and `x[2].length`

are `4`

. Here’s a diagram showing the lengths of a two 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[0].length`

is 5, `traingleArray[1].length`

is 4, `triangleArray[2]`

is 3, `triangleArray[3]`

is 2, and `triangleArray[4]`

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,

1 2 |
triangleArray[0][3] = 50; traingleArray[4][0] = 45; |

*Note that the syntax `new int[5][]`

for making an array requires the first index to be specified. So `new int[][]`

would be wrong.

**◄◄◄BACK | NEXT►►►**