# Java Program to Print Spiral Pattern of Numbers

• Difficulty Level : Medium
• Last Updated : 09 Mar, 2021

Given a number n as the size of the matrix, the task is to print a spiral pattern of size n.

Examples:

```Input : n = 4
Output: 1   2  3 4
12 13 14 5
11 16 15 6
10  9  8 7```

Preview of the Spiral Pattern:

## Java

 `public` `class` `GFG { ` ` `  `    ``public` `static` `void` `printSpiral(``int` `size) ` `    ``{ ` ` `  `        ``// Create row and col ` `        ``// to traverse rows and columns ` `        ``int` `row = ``0``, col = ``0``; ` ` `  `        ``int` `boundary = size - ``1``; ` `        ``int` `sizeLeft = size - ``1``; ` `        ``int` `flag = ``1``; ` ` `  `        ``// Variable to determine the movement ` `        ``// r = right, l = left, d = down, u = upper ` `        ``char` `move = ``'r'``; ` ` `  `        ``// Array for matrix ` `        ``int` `matrix[][] = ``new` `int``[size][size]; ` ` `  `        ``for` `(``int` `i = ``1``; i < size * size + ``1``; i++) { ` ` `  `            ``// Assign the value ` `            ``matrix[row][col] = i; ` ` `  `            ``// switch-case to determine the next index ` `            ``switch` `(move) { ` ` `  `            ``// If right, go right ` `            ``case` `'r'``: ` `                ``col += ``1``; ` `                ``break``; ` ` `  `            ``// if left, go left ` `            ``case` `'l'``: ` `                ``col -= ``1``; ` `                ``break``; ` ` `  `            ``// if up, go up ` `            ``case` `'u'``: ` `                ``row -= ``1``; ` `                ``break``; ` ` `  `            ``// if down, go down ` `            ``case` `'d'``: ` `                ``row += ``1``; ` `                ``break``; ` `            ``} ` ` `  `            ``// Check if the matrix ` `            ``// has reached array boundary ` `            ``if` `(i == boundary) { ` ` `  `                ``// Add the left size for the next boundary ` `                ``boundary += sizeLeft; ` ` `  `                ``// If 2 rotations has been made, ` `                ``// decrease the size left by 1 ` `                ``if` `(flag != ``2``) { ` ` `  `                    ``flag = ``2``; ` `                ``} ` `                ``else` `{ ` ` `  `                    ``flag = ``1``; ` `                    ``sizeLeft -= ``1``; ` `                ``} ` ` `  `                ``// switch-case to rotate the movement ` `                ``switch` `(move) { ` ` `  `                ``// if right, rotate to down ` `                ``case` `'r'``: ` `                    ``move = ``'d'``; ` `                    ``break``; ` ` `  `                ``// if down, rotate to left ` `                ``case` `'d'``: ` `                    ``move = ``'l'``; ` `                    ``break``; ` ` `  `                ``// if left, rotate to up ` `                ``case` `'l'``: ` `                    ``move = ``'u'``; ` `                    ``break``; ` ` `  `                ``// if up, rotate to right ` `                ``case` `'u'``: ` `                    ``move = ``'r'``; ` `                    ``break``; ` `                ``} ` `            ``} ` `        ``} ` ` `  `        ``// Print the matrix ` `        ``for` `(row = ``0``; row < size; row++) { ` `            ``for` `(col = ``0``; col < size; col++) { ` ` `  `                ``int` `n = matrix[row][col]; ` `                ``System.out.print((n < ``10``) ? (n + ``" "``) ` `                                          ``: (n + ``" "``)); ` `            ``} ` ` `  `            ``System.out.println(); ` `        ``} ` `    ``} ` ` `  `    ``// Driver Code ` `    ``public` `static` `void` `main(String[] args) ` `    ``{ ` ` `  `        ``// Get the size of size ` `        ``int` `size = ``5``; ` ` `  `        ``// Print the Spiral Pattern ` `        ``printSpiral(size); ` `    ``} ` `}`

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
```

My Personal Notes arrow_drop_up
Recommended Articles
Page :