给定格式创建三角形序列...为什么不会显示我的三角形

时间:2017-10-25 17:21:00

标签: java design-patterns numbers pattern-matching sequence

我试图弄清楚我的程序出了什么问题。应该有四个三角形打印:

1
1 2
1 2 3
1 2 3 4
1 2 3 4 5

1 2 3 4 5
1 2 3 4
1 2 3
1 2
1

        1
      2 1
    3 2 1
  4 3 2 1
5 4 3 2 1

1 2 3 4 5
  1 2 3 4
    1 2 3
      1 2
        1

以下是我到目前为止编写的代码:

public static String trianglePatterns(int limit) {
    // Triangle One
    for (int x = 1; x <= limit; x++) {
        for (int y = 1; y <= x; y++) {
            System.out.print(y + " ");
        }
        System.out.print("\n");
    }
    System.out.print("\n");
    // Triangle Two
    while (limit > 0) {
        for (int y = 1; y <= limit; y++) {
            System.out.print(y + " ");
        }
        limit--;
        System.out.println("");
    }
    // Triangle Three
    for (int row = 1; row <= limit; row++) {
        for (int space = 7; space >= 0; space--) {
            System.out.print(" ");
        }
        for (int num = 1; row >= 1; num--) {
            System.out.print(" " + num);
        }
    }
    return "";
}

我甚至没有开始第四个因为我不知道怎么做。我的程序将运行并正确显示前两个三角形,但在运行它时不会包含第三个三角形。是什么导致了这个问题,我该如何开始第四个三角形?

2 个答案:

答案 0 :(得分:2)

您在三角形2循环中将limit减少为0,但在第三个row <= limit中破坏条件。这就是为什么它不起作用的原因。
phflack注意到您在打印时不需要将整数转换为String。只需将int传递给print()即可。阅读docs中的更多内容。

答案 1 :(得分:0)

有些事要指出:

  1. 您的方法可能无效。
  2. System.out.print("\n"); = System.out.println();
  3. 您正在修改limit变量。最好在每个循环上使用副本
  4. 这是我的尝试:

    public static void trianglePatterns(final int limit) {
        // Triangle One
        for (int x = 1; x <= limit; x++) {
            for (int y = 1; y <= x; y++) {
                System.out.print(y + " ");
            }
            System.out.println();
        }
        System.out.println();
    
        // Triangle Two
        for (int x = limit; x > 0; x--) {
            for (int y = 1; y <= x; y++) {
                System.out.print(y + " ");
            }
            System.out.println();
        }
        System.out.println();
    
        // Triangle Three
        // first printint spaces of each row and then the numbers
        for (int x = 1; x <= limit; x++) {
            for (int space = (limit - x); space > 0; space--) {
                System.out.print("  ");
            }
    
            for (int num = x; num > 0; num--) {
                System.out.print(num + " ");
            }
            System.out.println();
        }
    
        System.out.println();
        // Triangle Four
        for (int x = limit; x >= 0; x--) {
            for (int space = (limit - x); space > 0; space--) {
                System.out.print("  ");
            }
    
            for (int num = 1; num <= x; num++) {
                System.out.print(num + " ");
            }
            System.out.println();
        }
    }
    

    trianglePatterns(5)的输出:

    1 
    1 2 
    1 2 3 
    1 2 3 4 
    1 2 3 4 5 
    
    1 2 3 4 5 
    1 2 3 4 
    1 2 3 
    1 2 
    1 
    
            1 
          2 1 
        3 2 1 
      4 3 2 1 
    5 4 3 2 1 
    
    1 2 3 4 5 
      1 2 3 4 
        1 2 3 
          1 2 
            1