Pattern double sided arrow

i’m not able to built logic, please provide me help

@aroshmishra2000_6c2ffe6238d74e2a
In Pattern Question, there is a common method which we teach in course viz, taking nsp, nst, csp, cst and row variables.

Pattern Hack: Always first Try to first print pattern by ignoring the value to be printed then accommodate your value in that pattern. For e.g.,

                    1 
                2 1   1 2 
            3 2 1       1 2 3 
        4 3 2 1           1 2 3 4 
            3 2 1       1 2 3 
                2 1   1 2 
                    1 

View it as:-

                    * 
                * *   * * 
            * * *       * * * 
        * * * *           * * * * 
            * * *       * * * 
                * *   * * 
                    *  

Short Info about the variables:-

  1. nsp (number of spaces)-> Number of spaces in very First Line of the pattern.
  2. nst (number of stars)-> Number of stars in very first line of the pattern.
  3. csp (counter of spaces)-> counter of spaces that will print the required number of spaces and will be initialized with 1 and incremented upto nsp.
  4. cst (counter of stars)-> counter of spaces that will print the required number of stars and will be initialized with 1 and incremented upto nst.
  5. rows -> It will be initialized with 1 and will go upto the total number of rows in the pattern.
    –Input N is the number of rows.Given pattern is seen as first spaces ,then numbers ,then spaces and then numbers again. Till middle row, number of numbers in one batch in a row is equal to row number. After middle row, number of numbers decreases each time by 1.The max value in the pattern is in the middle row which is (N/2 +1).

–So do the work of spaces first ,then that of numbers in decreasing order, then that of spaces and then that of numbers in increasing order.

Code:

import java.util.Scanner;
public class patternDSA {

public static void main(String[] args) {

    Scanner scn = new Scanner(System.in) ;
    int n = scn.nextInt() ;    // number of rows
    int nsp1 = n - 1;       // initializing number of spaces of 1st batch
    int nsp2 = -1;          // initializing number of spaces of 2nd batch
    int nst = 1;            // initializing number of numbers

    for (int row = 1; row <= n; row++) {

        int val;     // starting value of numbers

        if (row <= n / 2 + 1) {
            val = row;               // till mid value is equal to row number
        } else {
            val = n - row + 1;     // after mid values are total rows - current row +1
        }

          // work for spaces
        for (int csp = 1; csp <= nsp1; csp++) {
            System.out.print("  ");
        }

         // work for numbers
        for (int cst = 1; cst <= nst; cst++) {
            System.out.print(val + " ");
            val-- ;
        }

          // work for spaces
        for (int csp = 1; csp <= nsp2; csp++) {
            System.out.print("  ");
        }

        int cst = 1;
        val++ ;
        if (row == 1 || row == n) {
            cst = 2;

        }

        // work for numbers
        for (; cst <= nst; cst++) {
            System.out.print(val + " ");
            val++ ;
        }

        //preparation for next iteration
        if (row <= n / 2) {
            nsp1 -= 2;
            nst++;
            nsp2 += 2;
        } else {
            nsp1 += 2;
            nst--;
            nsp2 -= 2;
        }
        System.out.println();
    }
}

}

I hope I’ve cleared your doubt. I ask you to please rate your experience here
Your feedback is very important. It helps us improve our platform and hence provide you
the learning experience you deserve.

On the off chance, you still have some questions or not find the answers satisfactory, you may reopen
the doubt.