我在两个简单的java文件中有几个BigInteger
个对象。但是,由于它们不是原始类型,因此算术运算符不会对它们起作用。
每次使用运算符时都会出错,如下所示:
.\_Mathematics\Formulas\Factorial.java:10: error: bad operand types for binary o
perator '*'
result *= i;
^
first type: BigInteger
second type: int
他们是:
package _Mathematics.Formulas;
import java.math.*;
public class Factorial<T extends Number> {
public T o;
public BigInteger r;
public Factorial(int num) {
BigInteger result = new BigInteger("1");
for(int i = num; i > 0; i--)
result *= i;
this.o = num;
this.r = result;
}
}
和
package _Mathematics.Formulas;
import java.math.*;
public class Power<T extends Number> {
public T o;
public BigInteger r;
public Power(T num, int pow) {
BigInteger result = new BigInteger(1);
for(int i = 0; i < pow; i++) {
result *= num;
}
this.o = num;
this.r = result;
}
}
我四处寻找如何解决这个问题,但我找不到答案。
有人可以帮我吗?
感谢。
答案 0 :(得分:10)
BigInteger
有此操作符方法。由于BigInteger
本身是不可变的,因此需要将值赋给结果
例如以下
result *= num;
将成为
result = result.multiply(num);
答案 1 :(得分:3)
BigInteger为算术运算定义了自己的方法。因此,
result *= num;
应该是
result = result.multiply(num);
同样如果你想要add
,divide
或subtract
。
答案 2 :(得分:1)
您应该在BigInteger类中使用multiply方法。