为什么我的for循环打印一遍又一遍?

时间:2015-09-29 04:29:04

标签: java

编写一个名为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

为什么这只是一次又一次地打印最大功率而不是导致指数的所有功率?(如果说得当,那就是idk) 我究竟做错了什么?我想使用Math.pow方法

3 个答案:

答案 0 :(得分:4)

  

为什么这只是反复打印最大功率而不是   导致指数的所有权力?

因为您要在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 + " ");
}

您可能需要根据您的要求进行细微更改,但这可以让您对出现问题的方式有所了解。

答案 1 :(得分:1)

在你计算循环外的功率k并一遍又一遍地打印它。在每次循环迭代期间更改的值i根本不会被使用。

答案 2 :(得分:0)

这样可以立即试用

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();
}