Print Spiral Pattern in Java

Programming is always a fun and creative task. The more creative you can think the better programmer you will become. However, programming isn’t always about solving problems sometimes there’s also a fun aspect to it which makes it way more satisfying. If you are a programmer then you might have already played with patterns, strings, etc multiple times. Well, it’s also likely that you are already familiar with printing patterns. So in today’s article, we will create a program to Print Spiral Pattern in Java. With the help of this program, you will be able to print a spiral pattern of integers using java language. Practising these types of questions also helps to get an upper edge in Competitive Programming

 

So open up your IDE and let’s get started real quick. Once you understand the logic practice this program on your own to make your brain work in a problem-solving way. This is a somewhat hard question you might get asked in an interview so make sure to practice it on your own after reading this article.

 

Also Read: How To Print Hello World in Java Without Semicolon

 

What’s The Approach?

 

Firstly we will create a 2D array with size n.

 

Next, we will create variables to store the boundary of array and size left to print the spiral.

 

Also, we are going to create a char variable to store the movement of the spiral pattern. It is like  ‘r’ for right, ‘l’ for left, ‘d’ for down, and ‘u’ for up.

 

Now we will execute a loop from 1 to n*2 and will fill up the array in a spiral pattern.

 

Java Program To Print Spiral Pattern

 

Input: n = 5

 

public class TechDecodeTutorials {

    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

Ethix

I'm a coding geek interested in cyberspace who loves to write and read

Leave a Reply

Your email address will not be published. Required fields are marked *