我正在尝试编写一个小方法来计算给定数字和幂的指数(我知道math.pow我只是为了踢)。然而,我的方法中的循环永远不会开始,我无法弄清楚为什么。我的代码如下,所有帮助表示赞赏。
public static void main(String[] args) {
int result = exponantCalculation(2, 3);
System.out.println(result);
}
public static int exponantCalculation(int number, int power) {
for (int i = 1;i >= power;i++) {
number = number * number;
}
return number;
}
答案 0 :(得分:2)
您在循环条件中使用了错误的比较运算符(>=
,应该是<=
或<
- 请参阅其他答案。)
不确定,也许这是故意的,但如果该方法是为了计算“number
到power
的力量”,那么你就错误对结果进行平方上一次迭代。这将产生更高的值number
到power
的力量。
您需要引入一个新变量并将其与循环中的number
相乘,例如:
long result = 1;
for (int i = 0; i < power; i++) {
result *= number; // same as "result = result * number"
}
return result;
次要注意:我故意使用long
类型作为结果,这可能稍微推迟大值的整数溢出问题。
答案 1 :(得分:1)
for loop
内的条件错误。
由于您在方法中将3
作为power
作为参数传递,i
初始化为1
,然后检查条件是否为i>=power
在这种情况下显然不正确,所以你的循环永远不会开始。
更改
for (int i = 1;i >= power;i++)
到
for (int i = 1;i <= power;i++)
如果您想计算任何数字的功率,可以使用以下方法
public static int exponantCalculation(int number, int power) {
int result = 1;
for (int i = 1;i <= power;i++) {
result = result * number;
}
return result;
}
答案 2 :(得分:0)
for循环条件错误,但您还需要将结果存储在另一个变量中:
public static int exponantCalculation(int number, int power) {
if(power == 0){
return 1;
}
int result = 1;
for (int i = 1;i <= power;i++) {
result *= number;
}
return result;
}