Spiral Number Pattern

This program prints numbers arranged in a spiral inside a square.

Problem Statement

Write a Java program that prints a 5x5 spiral number pattern.

Source Code

1 public class SpiralNumberPattern {
2 public static void main(String[] args) {
3 int n = 5;
4 int[][] arr = new int[n][n];
5 int top=0, left=0, bottom=n-1, right=n-1, num=1;
6 while(top<=bottom && left<=right) {
7 for(int i=left; i<=right; i++) arr[top][i]=num++;
8 top++;
9 for(int i=top; i<=bottom; i++) arr[i][right]=num++;
10 right--;
11 for(int i=right; i>=left; i--) arr[bottom][i]=num++;
12 bottom--;
13 for(int i=bottom; i>=top; i--) arr[i][left]=num++;
14 left++;
15 }
16 for(int i=0; i<n; i++) {
17 for(int j=0; j<n; j++) System.out.print(arr[i][j] + "\t");
18 System.out.println();
19 }
20 }
21 }

Program Output

1   2   3   4   5   
16  17  18  19  6   
15  24  25  20  7   
14  23  22  21  8   
13  12  11  10  9   

Explanation

Boundary variables top, left, bottom, right shrink after each layer is filled, and four loops fill the top row, right column, bottom row, and left column in sequence, so numbers increment continuously forming a spiral pattern.

Quick Links to Explore