Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我想使用while循环打印X或*的一部分。应该是这样的_Java_Output - Fatal编程技术网

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++;
}