Related Articles
Java Program to Print Spiral Pattern of Numbers
• 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
```

Attention reader! Don’t stop learning now. Get hold of all the important Java Foundation and Collections concepts with the Fundamentals of Java and Java Collections Course at a student-friendly price and become industry ready. To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

My Personal Notes arrow_drop_up