如何对对象进行算术运算

时间:2013-08-27 17:28:02

标签: java math

我在两个简单的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;
    }
}

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

有人可以帮我吗?

感谢。

3 个答案:

答案 0 :(得分:10)

BigInteger有此操作符方法。由于BigInteger本身是不可变的,因此需要将值赋给结果

例如以下

result *= num;

将成为

result = result.multiply(num);

答案 1 :(得分:3)

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

result *= num;

应该是

result = result.multiply(num);

同样如果你想要adddividesubtract

答案 2 :(得分:1)

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