我刚刚开始使用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循环来帮助我绘制那个吗?
答案 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("*");
}