使用java for loops绘制形状

时间:2015-04-07 07:24:59

标签: java for-loop nested-loops

我刚刚开始使用Java,我的老师让我使用嵌套for循环绘制以下两个形状。

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

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

但是,我能够使用以下代码绘制第一个数字。

class TriangleDrawing{

    public static void main(String args[]){

        for(int x = 1; x <= 6; x++){

            for(int y = 1; y <= (6-x); y++){

                System.out.print(" ");

            }

            for(int z = 0; z < (x + (x-1)); z++){

                System.out.print("*");

            }

            for(int p = 1; p <= (6-x); p++){

                System.out.print(" ");

            }

            System.out.println();

        }

    }

}

我在绘制第二个数字时遇到了麻烦 任何人都可以通过使用嵌套for循环来帮助我绘制那个吗?

3 个答案:

答案 0 :(得分:2)

在我看来,第二个数字只是第一个用空格代替内部星号的数字。

这意味着您只需要更改z - 循环,以便在每一行但第一行和最后一行,它:

  • 打印一个星号;
  • 打印N个空格,其中N从第二行的一个开始,并且对于您所在的每一行增加两个;和
  • 打印最后的星号。

对于第一行和最后一行,代码需要保持不变。对于前者,您只需要一个星号,对于后者,您需要所有星号。

而且,顺便说一下,第三个循环是完全没必要的。没有必要在行尾(在这种情况下)放置空格,因为没有人可以看到它们。


由于这是课堂作业,我建议你自己尝试实施。为了完整起见,我在下面提供了解决方案:

public class Test {
    public static void main(String args[]){
        int sz = 6;

        // First line "*"

        for (int y = 1; y < sz; y++)
            System.out.print(" ");
        System.out.println("*");

        // Middle lines "*   *"

        for (int x = 2; x < sz; x++) {
            for (int y = 1; y <= sz - x; y++)
                System.out.print(" ");
            System.out.print("*");
            for (int y = 1; y < x * 2 - 2; y++)
                System.out.print(" ");
            System.out.println("*");
        }

        // Final line "*****"

        System.out.print("*");
        for (int y = 1; y < sz * 2 - 2; y++)
            System.out.print("*");
        System.out.println("*");
    }
}

答案 1 :(得分:0)

在这个块中:

  

for(int z = 0; z&lt;(x +(x-1)); z ++){

            System.out.print("*");

        }

检查您是否在第一个和/或最后一个元素中。若然,请打印'*',打印“”

答案 2 :(得分:0)

更改正在打印*的for循环:

 for(int z = 0; z < (x + (x-1)); z++){
        if(z==0 || z ==(x + (x-1))-1 || x==6)
                System.out.print("*");
        else
                System.out.print(" ");

    }

而不是

for(int z = 0; z < (x + (x-1)); z++){

            System.out.print("*");

        }