打印半个数字金字塔

Printing Half Pyramid of Numbers

public class NestedForLoop {

    private void generateNumberPyramid(int num) {
        int length = num + 1;

        for(int i = 1; i < length; i++) {

            for(int j = 0; j < i; j++) {
                System.out.print(j+1);
            }

            System.out.println();
        }
    }

    public static void main(String[] args) {
        NestedForLoop nfl = new NestedForLoop();
        nfl.generateNumberPyramid(4);
    }
}

输出结果如下:

1
12
123
1234

预期的输出应该是:

1
22
333
4444

可能出了什么问题?

System.out.print(j+1); 更改为 System.out.print(i);

System.out.print(i) 而不是 System.out.print(j+1)

您的问题出在嵌套的 for 循环中:

变化:

for(int j = 0; j < i; j++) {
    System.out.print(j+1);
}

收件人:

for(int j = 0; j < i; j++) {
    System.out.print(i);
}

i的值对应每一行。 i=1 指第一行,i=2 指第二行,依此类推。因此,在您的 for loop 中进行以下更改:

for(int i = 1; i < length; i++) {

        for(int j = 0; j < i; j++) {
            System.out.print(i);
        }

        System.out.println();
    }

爱德华 link: http://ideone.com/5g0xWT

由于您正在迭代 ROWS,因此您应该使用 i 而不是 (j+1)。这样做只会迭代你想要的东西,否则它会一直为每个数字加一。就像这样:

     for(int i = 1; i < length; i++) {

        for(int j = 0; j < i; j++) {
            System.out.print(i);
        }

        System.out.println();
    }