如何使用java制作菱形图案?

q7solyqu  于 2021-07-06  发布在  Java
关注(0)|答案(2)|浏览(328)

如果输入n=5输出,如何制作此图案:

我的是这样的,如果输入n=5输出就变成2n

这是我的密码

int i,j;

    for(i = 0; i <= n; i++)
    {
        for(j = 1; j <= n - i; j++)
            System.out.print(" ");
        for(j = 1; j <= 2 * i - 1; j++)
            System.out.print("*");
        System.out.print("\n");
    }

    for(i = n - 1; i >= 1; i--)
    {
        for(j = 1; j <= n - i; j++)
            System.out.print(" ");
        for(j = 1; j <= 2 * i - 1; j++)
            System.out.print("*");
        System.out.print("\n");
    }

我该修什么??

knsnq2tg

knsnq2tg1#

你可以检查循环中的奇数。请参见以下示例:

public static void main(String[] args) {
    printPattern(5);
  }

  private static void printPattern(int n) {
    int i, j;

    for (i = 0; i <= n; i++) {
      if (i % 2 != 0) {
        for (j = 1; j <= (n - i)/2; j++) {
          System.out.print(" ");
        }
        for (j = 0; j < i; j++) {
          System.out.print("*");
        }
        System.out.println();
      }
    }
    for (i = n - 1; i >= 1; i--) {
      if (i % 2 != 0) {
        for (j = 1; j <= (n - i)/2; j++) {
          System.out.print(" ");
        }
        for (j = 0; j <i; j++) {
          System.out.print("*");
        }
        System.out.println();
      }
    }
 }
laik7k3q

laik7k3q2#

而不是从 0N 两次。只跑一半 N/2 在每个循环中。
例子:

public static void main(String[] args) {
    int n = 10;

    for (int i = 0; i <= (n / 2 + 1); i++) {
      for (int j = 1; j <= n - i; j++) System.out.print(" ");
      for (int j = 1; j <= 2 * i - 1; j++) System.out.print("*");
      System.out.print("\n");
    }

    // N/2
    for (int i = n / 2 - 1; i >= 1; i--) {
      for (int j = 1; j <= n - i; j++) System.out.print(" ");
      for (int j = 1; j <= 2 * i - 1; j++) System.out.print("*");
      System.out.print("\n");
    }
  }

相关问题