功率表使用while循环格式化和逻辑错误

时间:2019-04-25 04:07:38

标签: java

我正在尝试创建一个1到5的表格,其中最多显示6个值。

因此,举例来说,第2列将从1,2,4,8,16,32,64移至此处并停止。

我无法获取正确的表格格式。由于数字未对齐应有的位置。

例如:

我现在面临的问题是

1 2 3 4 5
1 1 1 1 1 1 1 2 4 8 16等等

不胜感激,我的代码在下面。

 int powNumb=5;
 int powValue=6;

for (int i = 1; i <= powValue; i++) {
            System.out.printf("%10d",i);
        }
        System.out.println();
        for (int i = 1; i <= powNumb; i++) {
            for (int j = 0; j <=powValue; j++) {
                System.out.printf("%10.0f",Math.pow(i, j));
            }
        }

3 个答案:

答案 0 :(得分:2)

这应该对您有帮助

for (int i = 1; i <= powNumb; i++) {
    System.out.printf("%10d", i); //Print the number (1st col)
    for (int j = 0; j <= powValue; j++) { //This loop prints the powers of the curent number 'i'
        System.out.printf("%10.0f", Math.pow(i, j));
    }
    System.out.println(); //To end the current row
}

此打印

num   num^0  num^1  num^2 ... num^powValue

其中num从1到powNumb

输出

 1         1         1         1         1         1         1         1
 2         1         2         4         8        16        32        64
 3         1         3         9        27        81       243       729
 4         1         4        16        64       256      1024      4096
 5         1         5        25       125       625      3125     15625

答案 1 :(得分:1)

每个元素的基数相同,因此不需要内循环:

for (int i = 1; i <= powNumb; i++) {
    System.out.printf("%10.0f", Math.pow(powValue, i));
}

这样,权力的基础始终是powValue

答案 2 :(得分:1)

首先,您需要在内部for循环中的某个地方使用println语句来分隔行。

第二,您需要将通话中的ij切换到Math.pow。因为按照当前的设置方式,每一行的值都是i = row number,幂为0到6。例如,第一行是1^0 1^1 1^2 1^3 1^4 1^5 1^6。然后,第二行将是2^0 2^1 2^2 2^3 2^4 2^5 2^6,但是,您希望第一行是1^0 2^0 3^0 4^0 5^0,第二行是1^1 2^1 3^1 4^1 5^1,依此类推。因此,您的代码应更改为类似的内容,

int powNumb=5;
int powValue=6;

for (int i = 1; i <= powNumb; i++) {
    System.out.printf("%10d",i);
}
for (int i = 0; i <= powValue; i++) {
    System.out.println();
    for (int j = 1; j <=powNumb; j++) {
        System.out.printf("%10.0f",Math.pow(j, i));
    }
}

输出:

 1         2         3         4         5
 1         1         1         1         1
 1         2         3         4         5
 1         4         9        16        25
 1         8        27        64       125
 1        16        81       256       625
 1        32       243      1024      3125
 1        64       729      4096     15625

此外,我还必须在for循环条件下切换powNumbpowValue