为什么我的for循环一遍又一遍地打印相同的数字?



编写一个名为printPowersOfN的方法,该方法接受基数和指数作为参数,并打印基数从base0(1)到最大功率的每一次幂(包括最大功率)。例如,考虑以下调用:

printPowersOfN(4, 3);
printPowersOfN(5, 6);
printPowersOfN(-2, 8);

这些调用应该产生以下输出:

1 4 16 64

1 5 25 125 625 3125 15625

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

public class prac {
    public static void main(String[]args) {
        printPowersOfN(4,3);
        printPowersOfN(5,6);
        printPowersOfN(-2,8);
    }
    public static void printPowersOfN(int num1, int num2) {
        int k =(int) Math.pow(num1, num2);
        for (int i=1; i<=num2;i++) {            
            System.out.print( k + " ");
        }
        System.out.println();
    }
}

我的输出是:64 64 64

15625 15625 15625 15625 15625 15625

256 256 256 256 256 256 256 256 256 256

为什么这只是一遍又一遍地打印最大功率,而不是导致指数的所有功率?(不知道我的措辞是否恰当)我做错了什么?我想用数学。战俘方法

为什么这只是一遍又一遍地打印最大功率,而不是指数前的所有次幂?

因为你在k中存储了最大功率:

 int k =(int) Math.pow(num1, num2);

并在循环中一次又一次地打印k。

System.out.print( k + " ");

你也应该改变k的值。例如:

int k;
for (int i=0; i<=num2;i++) {
    k =(int) Math.pow(num1, i);
    System.out.print( k + " ");
}

您可能需要根据您的需求进行轻微的更改,但这可以让您对出错的地方有一个大致的了解。

可以,现在试试

public static void main(String[]args) {
    printPowersOfN(4,3);
    printPowersOfN(5,6);
    printPowersOfN(-2,8);
}
public static void printPowersOfN(int num1, int num2) {
    int k = 0;
    for (int i=0; i<=num2;i++) {            
        k =(int) Math.pow(num1, i);
           System.out.print( k + " ");
    }
    System.out.println();
}

计算循环外的功率k,然后一遍又一遍地打印它。在每个循环迭代期间改变的值i根本不使用。

相关内容

最新更新