# Java Program to print a given matrix in spiral form

Hello Friends, In this tutorial, we will look at how to print a given matrix in spiral form using Java program, a matrix of size m * n is taken (m is the number of rows and n is the number of columns).

## Print the given matrix in spiral form in Java

Let’s look at the following example:

Matrix M =

1 → 2 →  3
.             ↓
4 → 5     6
↑            ↓
7 ← 8 ←  9

Spiral Order of this matrix M is 1 2 3 6 9 8 7 4 5 that is shown using arrows.

In the above matrix number of rows are 3 so m=3, similarly n=3 as the number of columns is 3. So, The total number of elements that have to be printed would be equal to m*n. We maintain four variable as first_row, last_row, first_column and last_column, in each iteration we move from first_column to last_column(left to right) in first_row then first_row+1 to last_row(top to bottom) in last_column then last_col-1 to first_col (right to left) in last_row and finally last_row-1 to first_row+1 (bottom to top) in first_column. After each iteration, we update first_row and first_column by incrementing 1 and last_row and last_column by decrementing 1.

Please look at the attached spiral.java for implementation:

```import java.util.*;
import java.io.*;

public class spiral
{
public static void main(String[] args)
{
int [][]a = {{1,2,3},{4,5,6},{7,8,9}};

//	1 2 3
//	4 5 6
//	7 8 9

int m = 3;  // number of rows
int n = 3;	// number of columns

int first_row=0;
int last_row=m-1;
int first_column=0;
int last_column=n-1;

for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
System.out.print(a[i][j]+"\t");
}
System.out.println();
}

System.out.println("The Output of the given matrix in spiral order: ");
int count=0;

while((first_row<=last_row) && (first_column<=last_column))
{
for(int i=first_column;i<=last_column;i++)
{
if(count<m*n)
{
count++;

System.out.print(a[first_row][i]+" ");

}
}

for(int i=first_row+1;i<=last_row;i++)
{
if(count<m*n)
{
count++;

System.out.print(a[i][last_column]+" ");

}
}

for(int i=last_column-1;i>=first_column;i--)
{
if(count<m*n)
{
count++;

System.out.print(a[last_row][i]+" ");

}
}

for(int i=last_row-1;i>first_row;i--)
{
if(count<m*n)
{
count++;

System.out.print(a[i][first_column]+" ");

}
}

first_row++;
first_column++;
last_row--;
last_column--;
}

}
}
```

After Compiling it using javac spiral.java and then executing it using java spiral we get our output as:

```1 2 3
4 5 6
7 8 9
The output of the given matrix in spiral order:
1 2 3 6 9 8 7 4 5```