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.