数字金字塔,以0结尾,以9开头

时间:2016-08-01 12:15:43

标签: java

我想打印一个以0开头并以9结尾的数字金字塔,当它等于9时,程序应该从0到9重新开始,依此类推......

以下是我的尝试:

public static void main(String[] args) {

    for (int i = 0; i < 10; i += 2) {
        for (int j = 0; j < 10 - i; j += 2) {
            System.out.print(" ");
        }
        for (int k = 0; k <= i; k++) {
            System.out.print(" " + k);
        }
        System.out.println();
    }
}        

打印

      0
     0 1 2
    0 1 2 3 4
   0 1 2 3 4 5 6
  0 1 2 3 4 5 6 7 8

但我需要这个..

            0
         1  2  3
      4  5  6  7  8
   9  0  1  2  3  4  5...

2 个答案:

答案 0 :(得分:1)

每次k打印0的每次迭代,您都会打印从i开始的0 1 2 3..。而是创建一个初始化为0的局部变量并打印它,并且每次都增加一个。在您的情况下,当0值大于counter时,您希望从9启动计数器,您可以通过添加if(counter > 9) counter = 0;来为此添加检查。添加了以下代码:

int counter = 0;
for (int i = 0; i < 10; i += 2) {
 for (int j = 0; j < 20 - i; j++) {
  System.out.print(" ");
 }
 for (int k = 0; k <= i; k++) {
  System.out.print(" " + counter++);
  if(counter > 9) counter = 0;
 }

 System.out.println();
}

输出

             0
           1 2 3
         4 5 6 7 8
       9 0 1 2 3 4 5
     6 7 8 9 0 1 2 3 4

DEMO

答案 1 :(得分:0)

你可以拥有一个变量并每次都增加它。

public static void main(String[] args) {
    int count=0;
    for (int i = 0; i < 10; i += 2) {
        for (int j = 0; j < 10 - i; j += 2) {
            System.out.print("  ");
        }
        for (int k = 0; k <= i; k++) {
            System.out.print(" " + count++);
            if(count>9)
                count=count%10;
        }

        System.out.println();
    }
}