我的输出应该如图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();
}
}
}
答案 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