使用升序和降序数字在Java中打印居中的金字塔
我试着打印一个以2^n为中心的金字塔,其中2^row#是每行的中心数字,左边的数字升序为2^row#,右边的数字降序。我对Java非常陌生,花了很长时间才了解到这一点。但现在我被卡住了。最后一行是唯一正确的行。我不知道如何使它不是每行都打印64。谁能给我一个提示吗 我试过搞乱每一个参数——用第一行开始最后一个循环,最后一行,改变启动功率等等,但我就是搞不懂 谢谢你的提示使用升序和降序数字在Java中打印居中的金字塔,java,loops,for-loop,Java,Loops,For Loop,我试着打印一个以2^n为中心的金字塔,其中2^row#是每行的中心数字,左边的数字升序为2^row#,右边的数字降序。我对Java非常陌生,花了很长时间才了解到这一点。但现在我被卡住了。最后一行是唯一正确的行。我不知道如何使它不是每行都打印64。谁能给我一个提示吗 我试过搞乱每一个参数——用第一行开始最后一个循环,最后一行,改变启动功率等等,但我就是搞不懂 谢谢你的提示 public static void main (String [] args){ int row; for
public static void main (String [] args){
int row;
for (row = 0; row <= 8; row++){ // Prints each row
for (int spaces = 8; spaces >= row; spaces --){ // Prints out spaces to left
System.out.print(" ");
}
int power1 = 0; // Power that 2 is being raised to
for (int i = 0; i < row; i++) { // Prints left side of the pyramid
System.out.print(" " + (int)Math.pow(2, power1));
power1++;
}
int power2 = 7;
for (int i = 1; i < row; i++) { // Prints right side of the pyramid
power2--;
System.out.print(" " + (int)Math.pow(2, power2));
}
System.out.println();
}
}
}
publicstaticvoidmain(字符串[]args){
int行;
对于(row=0;row=row;spaces--){//打印出左侧的空格
系统输出打印(“”);
}
int power1=0;//将2提升到的功率
对于(int i=0;i|
您将常数赋值给power2,而不是依赖于行的值。你能试试这个吗
int power2=第1行 您的问题在于,您总是从金字塔的右侧2^7开始,因为您硬编码了power2=7偏差和赋值。如果改为在当前行-1处启动此值,则会得到所需的行为。代码:
public static void main (String [] args){
int row;
for (row = 0; row <= 8; row++){ // Prints each row
for (int spaces = 8; spaces >= row; spaces --){ // Prints out spaces to left
System.out.print(" ");
}
int power1 = 0; // Power that 2 is being raised to
for (int i = 0; i < row; i++) { // Prints left side of the pyramid
System.out.print(" " + (int)Math.pow(2, power1));
power1++;
}
int power2 = row - 1;
for (int i = 1; i < row; i++) { // Prints right side of the pyramid
power2--;
System.out.print(" " + (int)Math.pow(2, power2));
}
System.out.println();
}
publicstaticvoidmain(字符串[]args){
int行;
对于(row=0;row=row;spaces--){//打印出左侧的空格
系统输出打印(“”);
}
int power1=0;//将2提升到的功率
对于(int i=0;i|
这部分不正确
int power2 = 7;
for (int i = 1; i < row; i++) { // Prints right side of the pyramid
power2--;
System.out.print(" " + (int)Math.pow(2, power2));
}
intpower2=7;
对于(inti=1;i|
在第2行,您得到power2=6,因此显示2^6=64
你应该做一些类似的事情
int power2 = power1;
for (int i = 1; i < row; i++) { // Prints right side of the pyramid
power2--;
System.out.print(" " + (int)Math.pow(2, power2));
}
intpower2=power1;
对于(inti=1;i|
我会把你的问题分开:首先解决数学问题,然后再进行漂亮的打印。尝试用不同的值初始化power2
,比如power1-1
。