有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

关于星型模式的java

我正在试着打印下面的星形图案

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

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

*
***
*****

上半年代码:

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) 个答案

  1. # 1 楼答案

    你只需要把循环写反,从上限-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();
    }
    
  2. # 2 楼答案

    模式由N * 2 - 1rows组成。对于每一行,列的顺序是递增的,直到Nth row。在Nth 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");
      }
      

      输出:

      *
      **
      ***
      **
      *
      
  3. # 3 楼答案

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

    首先,你需要五行,所以

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