打印半金字塔的数字

时间:2015-05-04 17:26:42

标签: java for-loop nested

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

可能出现什么问题?

5 个答案:

答案 0 :(得分:3)

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

System.out.print(i);

答案 1 :(得分:2)

library(AER) library(caret) data(Mortgage) fitControl <- trainControl(method = "repeatedcv" ,number = 5 ,repeats = 10 ,allowParallel = TRUE) library(doMC) registerDoMC(cores=10) Final.rfModel <- train(form=networth ~ ., data=Mortgage, method = "rf", metric='RMSE', trControl = fitControl, tuneLength=10, importance = TRUE) #### partial plots fail partialPlot(Final.rfModel$finalModel, Mortgage, "liquid") library(plotmo) plotmo(Final.rfModel$finalModel) 代替System.out.print(i)

答案 2 :(得分:2)

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

变化:

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

要:

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

答案 3 :(得分:2)

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

Ideone链接:http://ideone.com/5g0xWT

答案 4 :(得分:1)

由于你正在迭代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();
    }