0

我应该根据用户输入的数字创建此模式。用户输入的数字对应于每行的行数和星数。

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

有人告诉我只能使用嵌套的 for 循环,而不能使用 printf()。这只是我正在处理的代码的一部分。

for (int row = 1; row <= size; row++) {
            for (int column = 1; column <row; column++) {
                System.out.print(" ");
            }
            for (int column = 1; column <= row; column++) {
            System.out.print("*");
        }
        System.out.println();

    }

我似乎无法做出如上图所示的输出。相反,我得到了这个:

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

有人可以给我一个关于我应该做什么的提示吗?我已经花了2个小时,但仍然无法弄清楚。

4

3 回答 3

1

对于每一行,您应该输出最大size字符数;所以如果 size = 5,在第三行,如果输出三颗星,那么你需要size-row空格 => 5 - 3 = 2。

在代码中:

for (int row = 1; row <= size; row++) {
    for (int column = 1; column <= size-row; column++) {
        System.out.print(" ");
    }
    for (int column = 1; column <= row; column++) {
        System.out.print("*");
    }
    System.out.println();
}

示例:http: //ideone.com/hC5HDQ

于 2013-10-19T02:32:45.350 回答
0

你想从更多的空间开始,然后删除它们,直到没有更多的空间。但是在删除空格的同时,您还需要添加额外的“*”。因此,对于删除的每个空格,您将添加一个“*”

于 2013-10-19T02:27:13.997 回答
0

尝试这个

int i=5;

do{
    int j=5;

    while(j>i){
        System.out.print("*");
        j--;
    }
    System.out.println();
    i--;

}while(i>0);
于 2016-01-27T01:54:23.893 回答