java嵌套for循环以获取数字三角形

时间:2014-10-23 15:50:01

标签: java nested-loops

我的输出应该如图1所示,但我的输出看起来像是图像2。

我不打算打印出来...在那里我必须用32然后64打印出相同的东西.int 这就是我到目前为止,我得到的三角形的一半是正确的。我不知道怎么扭转它。

    k = 1;
    int j;
    int l = 1;
    for(int i=1; i <= 8; i++){
      for(j=8; j>i; j--){
        System.out.print("  ");
      }
      for(j=1; j<=k; j=j*2){
        System.out.print(j + " ");
      }
      for (j = 1; j<k; j=j*2) {
            System.out.print(j + " ");

        }

        k = k * 2;



      System.out.println();

    }
  }
}

enter image description here enter image description here

1 个答案:

答案 0 :(得分:1)

你的问题是,在第二个循环中,你仍然从j=1 -> k开始。您只需执行k -> 1循环即可获得相反的序列。

此外java还有printf方法,您可能需要查看..

一些示例代码:

   int rows = 8;
    for (int r = 0; r <= rows; r++) {
        System.out.print(new String(new char[rows - r]).replace("\0", "  "));
        int c = 0;
        for (int i = 0; i <= r; i++) 
            System.out.printf("%s%s", 1<<i, r == 0?  "\n" : " ");            
        if (r > 0) 
            for (int i = r-1; i >= 0; i--) 
                System.out.printf("%s%s", 1<<i, i == 0?  "\n" : " ");

    }

只需将rows调整为您喜欢的值。

我使用rows=8进行了测试,打印出来:

                1
              1 2 1
            1 2 4 2 1
          1 2 4 8 4 2 1
        1 2 4 8 16 8 4 2 1
      1 2 4 8 16 32 16 8 4 2 1
    1 2 4 8 16 32 64 32 16 8 4 2 1
  1 2 4 8 16 32 64 128 64 32 16 8 4 2 1
1 2 4 8 16 32 64 128 256 128 64 32 16 8 4 2 1