-1

BigInteger在两个简单的 java 文件中有几个对象。但是,由于它们不是原始类型,因此算术运算符不会对它们起作用。

每次使用运算符时都会出错,如下所示:

.\_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;
    }
}

我环顾四周寻找如何解决这个问题,但我找不到答案。

有人可以帮我吗?

谢谢。

4

3 回答 3

10

BigInteger有这方面的操作员方法。由于BigInteger本身是不可变的,因此需要将值分配给结果

例如以下

result *= num;

会变成

result = result.multiply(num);
于 2013-08-27T17:29:54.480 回答
3

BigInteger为算术运算定义了自己的方法。因此,

result *= num;

应该

result = result.multiply(num);

同样,如果您想要add,dividesubtract.

于 2013-08-27T17:32:06.933 回答
1

您应该在BigInteger类中使用 multiply 方法。

于 2013-08-27T17:30:52.710 回答