-3

我正在尝试在星形图案下方打印

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

我正在使用以下逻辑进行打印:

*
***
*****

上半场代码:

int i, j;
for (i = 1; i <= 3; i++) {
    for (j = 1; j <= i; j++)
        System.out.print("*");
    for (j = i - 1; j >= 1; j--)
        System.out.print("*");
    System.out.println();
}

但我仍然不确定如何打印整个结构。

4

3 回答 3

1

您只需要逆向编写循环,从 upperBound - 1 开始。请参见下面的代码:

int numberOfLines = 3;
for (int i = 1; i <= numberOfLines; i++) {
    for (int j = 1; j < 2*i; j++){
        System.out.print("*");
    }
    System.out.println();
}
for (int i = numberOfLines - 1; i > 0; i--) {
    for (int j = 1; j < 2*i; j++){
        System.out.print("*");
    }
    System.out.println();
}
于 2014-03-27T08:08:26.630 回答
1

采取尽可能简单的步骤也许是有意义的。

首先,你需要五行,所以

for (i = 1; i <= 5; i++) {

接下来,在线i,确定您要放置的星号数量。第 3 行有 5 个星号,在该行上方或下方每一步减少两个。

    int len = 5 - Math.abs (i - 3) * 2;

然后,只需将它们放在一个循环中:

    for (j = 1; j <= len; j++)
        System.out.print("*");

并包括一个换行符:

    System.out.println();
}
于 2014-03-27T08:12:19.033 回答
0

该模式由N * 2 - 1rows. 对于每一行,列按递增顺序排列,直到Nth row. 之后Nth row columns按降序打印。

一步一步的描述性逻辑打印半菱形星形图案。

  1. 输入要从用户打印的列数。将其存储在变量 sayN中。

  2. 为每一列声明一个变量作为循环计数器,比如columns = 1.

  3. 要遍历行,请从1 to N * 2 - 1. 循环结构应如下所示for(i=1; i<N*2; i++)

  4. 要遍历列,请运行从 1 到列的内部循环。循环结构应如下所示for(j=1; j<=columns; j++)。在这个循环里面打印star

  5. 打印完一行的所有列后,移动到下一行。

  6. 在内部循环检查之后,if(i <= N)然后递增columns,否则递减 1。

    int columns = 1;
    int N = 3;
    for (int i = 1; i < N * 2; i++) {
        for (int j = 1; j <= columns; j++) {
            System.out.print("*");
        }
        if (i < N) {
            /* Increment number of columns per row for upper part */
            columns++;
        } else {
            /* Decrement number of columns per row for lower part */
            columns--;
        }
        /* Move to next line */
        System.out.print("\n");
    }
    

    输出:

    *
    **
    ***
    **
    *
    
于 2019-05-06T10:39:45.193 回答