*
*****
*********
*********
*********
*********
这是我的代码,但它无效
final int WIDTH = 6;
final int HEIGHT = 9;
int i = 0;
int j = 0;
while (i < HEIGHT * 2 && j < WIDTH) {
if ((i + (i % 2) + (WIDTH) / 2) < j // right slope
|| (i + (i % 2) + j) < (WIDTH) / 2)// left slope
{
System.out.print(" ");
}
else {// solid then
System.out.print("*");
}
}
System.out.println();
i+=2;
j++;
答案 0 :(得分:1)
您的增量器i和j当前在while循环结束括号(})之外。 由于它们永远不会增加,因此while条件永远不会发生。 导致无限循环的常见错误。
if条件的+(i%2)部分也是没有意义的,因为每次将i递增2,因为任何偶数%2都是0。
我的建议是手动追踪代码,或许从较小的值开始,但这有助于您了解出现了什么问题。
答案 1 :(得分:0)
正如我在评论中提到的,如果你不希望它是无限的,你必须增加while()
循环中的值。所以,也许可以在底部添加它们!
while (i < HEIGHT) {
if (i == 0) {
System.out.print(" *");
} else if (i == 1) {
System.out.print(" *****");
} else {// solid then
System.out.print("**********");
} System.out.println("");
i++;
}
编辑:我还更改了检查条件,使其更简单。如果您只需打印这一个形状就应该没问题,但如果您要制作各种尺寸,则需要改进算法!