创建双镜像三角形

时间:2016-03-06 18:07:27

标签: java

我需要帮助制作这样的镜像三角形:

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

我可以分别得到每个人,但我无法将它们结合起来。

public static void main(String[] args){
      for( int i = 1; i <= 5; i++ ){
            for( int j = 0; j < i; j++ ){
                System.out.print("*");

            }
            System.out.println();
        }
      for(int i = 0; i < 6; i++)
      {
          for(int j = 5; j > 0; j--)
          {
              if(i < j)
                  System.out.print(" ");
              else
                  System.out.print("*");
          }
          System.out.println();
      }
}

4 个答案:

答案 0 :(得分:4)

您需要从两侧跟踪位置,以便能够在正确的位置显示*。这是解决方案:

for (int i = 1; i <= 5; i++) {
    for (int j = 1; j <= 10; j++) {
        if (j <= i || j > 10 - i) {
            System.out.print("*");
        } else {
            System.out.print(" ");
        }
    }
    System.out.println();
}

答案 1 :(得分:3)

您可以使用此代码执行此操作。

public class Test {
    public void sizeOfTri(int triSize) { //Number of lines
        int line = 1;
        for(int i = 0; i < triSize; i++) { //Handles Each line
            int temp = triSize * 2;
            for(int j = 1; j < temp; j++) { //Handles Each space on the line
                if(j <= line && j == triSize || j >= temp - line && j == triSize) { //For the very last line because it needs an extra *
                    System.out.print("**");
                } else if(j <= line || j >= temp - line) { //For normal lines
                    System.out.print("*");
                } else if(j == triSize) {
                    System.out.print("  "); //For the second to last line because it needs an extra space to make it look mirrored
                } else { //For normal lines
                    System.out.print(" ");
                }
            }
            System.out.println();
            line++;
        }
    }

    public static void main(String[] args) {
        new Test().sizeOfTri(4);
    }
}

我在if语句旁边评论了哪一部分做了什么。这将产生一个输出,在运行时如下所示

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

答案 2 :(得分:2)

尽管如此,以上所有实现都非常好。我想做的有点不同,并且使用二维数组。

package algorithms;

public class DrawMirror {
    static void initialize(String[][] array){
        for (int i=0; i<MAX_X; i++){
            for (int j=0; j < MAX_Y; j++){
                array[i][j] = " ";
            }
        }
    }

    static void draw(String[][] array, int x, int y){
        for (int i=0; i < y; i++){
            array[x][i] = "*";
            array[x][MAX_Y-i-1] = "*";
        }
    }

final static int MAX_X = 4;
final static int MAX_Y = 8;

    public static void main(String[] args) {
        String[][] array = new String[MAX_X][MAX_Y];

        initialize(array);

        for (int i=0; i < MAX_X ; i++){
            draw(array,i,i+1);
        }


        for( int i = 0; i < MAX_X; i++ ){
            for( int j = 0; j < MAX_Y; j++ ){
                System.out.print(array[i][j]);
            }
            System.out.println();
        }
     }
}

答案 3 :(得分:1)

以下代码是一个可变高度的函数。

public static void printDoubleTriangle(int height) {
    for(int i = 0; i < height; i++) {
        for(int j = 0; j < 2*height; j++) {
            if(j <= i || (2*height - j - 1) <= i) {
                System.out.print("*");
            } else {
                System.out.print(" ");
            }
        }
        System.out.println();
    }
}