Make a upside down triangle in java

2019-01-12 12:36发布

问题:

I am trying to make the triangle I have made up side down. Tried many times, but I don't know how to do this.

The code I have know is:

public static void drawPyramide(int lines, char symbol, boolean startDown) {
    //TRIANGLE

    if(startDown) {
                //The triangle up side down should be here. 
            }

    else {
        int c = 1;
        for (int i = 0; i < lines; i++) {
            for (int j = i; j < lines; j++) {
                System.out.print(" ");
            }
            for (int k = 1; k <= c; k++) {
                if (k%2==0) System.out.print(" ");

                else System.out.print(symbol);
            }

        System.out.print("\n");
        c += 2;
        }
    }

}

Any suggestions how I can "flip" this triangle? Thanks.

回答1:

To flip the triangle you really just need to change the direction of iteration. Instead of going from i = 0 to i < lines you need to go down from i = lines-1 to i >= 0

You also need to change the c to how many spaces and symbols you want to start with.

Could look like this:

int c = 2*lines;
for (int i = lines-1; i>=0; i--)
{
    for (int j = i; j < lines; j++)
    {
        System.out.print(" ");
    }
    for (int k = 1; k <= c; k++)
    {
        if (k % 2 == 0)
        {
            System.out.print(" ");
        }
        else
        {
            System.out.print(symbol);
        }
    }

    System.out.print("\n");
    c -= 2;
}


回答2:

Reverse the first loop condition i.e. start from number of line and decrease it. Also adjust you c accordingly and make it reduce from high to low e.g. below:

    int c = 2*lines-1;
    for (int i = lines; i > 0; i--) {
        for (int j = i; j < lines; j++) {
            System.out.print(" ");
        }
        for (int k = 1; k <= c; k++) {
            if (k%2==0) System.out.print(" ");

            else System.out.print(symbol);
        }

      System.out.print("\n");
      c -= 2;
    }


回答3:

import java.util.Scanner;

public class EquilateralTraingle {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int side = sc.nextInt();
        constructEquTri(side);

    }

    private static void constructEquTri(int length) {
        // loop for each line
        for (int i = length; i > 0; i--) {
            // loop for initial spaces in each line
            for (int k = 0; k < length - i; k++) {
                System.out.print(" ");
            }
            // loop for printing * in each line
            for (int j = 0; j < i; j++) {

                System.out.print("*");
                System.out.print(" ");

            }
            System.out.println();
        }
    }

}
/*Output:
    10
    * * * * * * * * * * 
     * * * * * * * * * 
      * * * * * * * * 
       * * * * * * * 
        * * * * * * 
         * * * * * 
          * * * * 
           * * * 
            * * 
             * 
*/


标签: java geometry