我想使用while循环打印X或*的模式。它应该看起来像

时间:2013-02-27 18:22:53

标签: java output

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

这是我的代码,但它无效

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

2 个答案:

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

编辑:我还更改了检查条件,使其更简单。如果您只需打印这一个形状就应该没问题,但如果您要制作各种尺寸,则需要改进算法!