关于星形图案

时间:2014-03-27 08:04:17

标签: java ascii-art

我正在尝试打印星形图案

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

我使用以下逻辑打印:

*
***
*****

上半年代码:

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();
}

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

3 个答案:

答案 0 :(得分: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();
}

答案 1 :(得分:1)

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

首先,你需要五行,所以

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

接下来,在i行,确定您要放置的星号数。它在第3行是五个星号,每行在该行的上方或下方两个星号。

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

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

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

并添加换行符:

    System.out.println();
}

答案 2 :(得分:0)

该模式由N * 2 - 1rows组成。对于每一行,列按升序排列,直到Nth rowNth row columns按降序打印后。

分步描述性逻辑可打印半菱形星形图案。

  1. 输入要从用户打印的列数。将其存储在变量N中。
  2. 为每列声明一个变量作为循环计数器,例如columns = 1
  3. 要遍历行,请从1 to N * 2 - 1运行外部循环。循环结构应类似于for(i=1; i<N*2; i++)
  4. 要遍历列,请运行从1到列的内部循环。循环结构应类似于for(j=1; j<=columns; j++)。在此循环中,打印星级
  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");
    }