嵌套循环居中字符

时间:2014-05-13 07:30:41

标签: java for-loop nested-loops

我正在尝试制作一棵树,如下所示:

  *
 ***
*****
 ===

我能够让树居中,但我似乎无法让树桩与树的其余部分居中。我被困在如何做到这一点,任何帮助将不胜感激! (树的树桩总是有三个相同的标志)

        int height = 4;
        int counter = 1;
        int spaces = 20;
        for (int row = 1; row <= height; row++){

           for (int j = 1; j <= spaces; j++){
              System.out.print(" ");
           }

           for (int j = 1; j <= counter; j++){
              System.out.print("*");     
           }

           System.out.println("");
           counter += 2;
           spaces--;


         } // end of outer loop
         for(int i=0; i<3; i++){
            System.out.print("=");
         }

1 个答案:

答案 0 :(得分:1)

public class A {

    public static void main(String[] args) {

        int height = Integer.parseInt(args[0]);
        int counter = 1;
        int spaces = height-1;
        for (int row = 1; row <= height; row++){

           for (int j = 1; j <= spaces; j++){
              System.out.print(" ");
           }

           for (int j = 1; j <= counter; j++){
              System.out.print("*");
           }

           System.out.println("");
           counter += 2;
           spaces--;
         } // end of outer loop
         counter-=2; // length of last line
         for(int i=1; i<=counter/2-1; i++){
            System.out.print(" ");
          }
          System.out.print("===");
    }
}

观察我们在第一行中留出等于(最后一行的长度)/ 2的空间并且它保持减少1.我们可以通过算术进程找到最后一行的长度。

观察= =的中间=始终打开(最后一行的长度)/ 2 + 1个字符。因此,我们必须在此之前将空格放到两个字符之间,即(长度)/ 2-1。