0

好的,我很尴尬,我不得不问这个问题,但我被困住了,所以我们开始吧,请把我推向正确的方向。我们需要使用嵌套循环来创建它:

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

这就是我想出的。

int row,col; 
for(row = 5; row >= 1; row--)
{ 
    for (col = 0; col < 5 - row; col++)
        println("");

    for(col = 5; col >= row; col--)
        print("*");
}

它几乎可以工作,但它会在每行之间打印空格,我一生都无法弄清楚原因。

4

5 回答 5

2

为什么不只println("");在循环末尾一个而不是循环该语句?每行星星只需要一个新行。

于 2013-05-03T18:44:50.090 回答
1

我认为您只想使用一个内部循环来打印每一行星星。然后在每一行的末尾打印一个换行符:

int row, col;
for(row = 1; row <= 5; row++) {
    for(col = 0; col < row; col++) {
        print("*");
    }
    println("");
}
于 2013-05-03T18:48:12.797 回答
0

你为什么不这样做:

for (int row = 0; row < 5; row++) {
        for (int col = 0; col <= row; col++) {
            System.out.print("*");
        }
        System.out.print("\n");
}
于 2013-05-03T18:48:48.570 回答
0

为什么不简化呢?

int row, col;
for(row=0; row<5; row++) {
    for(col=0;col<=row;col++) {
        System.out.print("*");
    }
    System.out.println();
}

一次打印一行,然后打印行尾


为了只进行一次 I/O 操作,函数可能是一种合适的方法:

public String starStarcase(int rows) {
    int row, col;
    String str="";
    for(row = 0; row < rows; row++) {
        for(col = 0; col <= row; col++) {
            str += "*";
        }
        str += "\n";
    }
    return str;
}

要打印结果:

System.out.println(starsStaircase(5));
于 2013-05-03T18:49:03.320 回答
0

你可以试试这个,它应该工作:

for(int j = 0; j < row; j++){
    for(int i = 1; i <= row; i++){
        System.out.print(i < row-j ? " " : "#");
    }
    System.out.println("");
}
于 2019-03-09T07:55:16.157 回答