Java 我想使用while循环打印X或*的一部分。应该是这样的
这是我的代码,但它不起作用Java 我想使用while循环打印X或*的一部分。应该是这样的,java,output,Java,Output,这是我的代码,但它不起作用 * ***** ********* ********* ********* ********* final int WIDTH=6; 最终整数高度=9; int i=0; int j=0; 而(i
*
*****
*********
*********
*********
*********
final int WIDTH=6;
最终整数高度=9;
int i=0;
int j=0;
而(i<高度*2&&j<宽度){
如果((i+(i%2)+(宽度)/2)
您的递增项i和j当前在while循环结束括号(})之外。
因为它们从不递增,所以while条件从不命中。
导致无限循环的常见错误
另外,if条件的+(i%2)部分是没有意义的,因为每次都将i增加2,因为任何偶数%2都是0
我的建议是手动跟踪代码,也许从较小的值开始,但这将帮助您了解出错的原因。正如我在评论中提到的,如果您不希望
while()
循环中的值是无限的,则必须增加该循环中的值。因此,也许可以在底部添加它们
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++;
while(i
编辑:我还更改了您的检查条件,使其更简单。如果你只需要打印这一个形状就可以了,但是如果你要制作多种尺寸,你需要改进你的算法 那么,它输出了什么呢?出于好奇,为什么在打印完成后要增加
i
和j
?这看起来像一个无限循环。。。!这是java,不是C,对吗?输出是一个无限循环,它保持打印空间。你必须在while循环中增加。即使我将其放入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++;
}