BigInteger 加法总是 0
BigInteger addition always 0
我遇到以下问题:当尝试添加到 BigIntegers 的总和时,结果仍然为 0。
代码如下:
public void NumberOfOutcomes(int x, int y){
BigInteger first = BigInteger.valueOf(0);
BigInteger second = BigInteger.valueOf(0);
for(int i = 0; i <= (x / 2); i++){
first.add( fac(x - i).divide((fac(x - 2*i).multiply(fac(i)))) );
System.out.println("First " + first.add( fac(x - i).divide((fac(x - 2*i).multiply(fac(i)))) ));
}
for(int i = 0; i <= (y / 2); i++){
second.add( fac(y - i).divide((fac(y - 2*i).multiply(fac(i)))) );
System.out.println("Second " + second.add( fac(y - i).divide((fac(y - 2*i).multiply(fac(i)))) ));
}
System.out.println("First " + first);
System.out.println("Second " + second);
System.out.println(first.multiply(second));
}
这里fac
是阶乘函数
这是终端上的内容:
points1.NumberOfOutcomes(2, 3)
First 1
First 1
Second 1
Second 2
First 0
Second 0
0
这是因为BigInteger
是不可变的,这意味着它的值不会改变。因此 first.add(x)
将创建 一个新的 BigInteger
包含计算结果,即将结果重新分配给第一个,如 first = first.add(...)
.
add
方法 BigInteger
class returns 操作数和已存储在对象本身中的值的总和。但它不会将结果存储在对象中(第一个或第二个)。
它的工作方式与
不同
first += value;
实际上,你必须让它看起来像这样:
first = first.add(value);
我遇到以下问题:当尝试添加到 BigIntegers 的总和时,结果仍然为 0。
代码如下:
public void NumberOfOutcomes(int x, int y){
BigInteger first = BigInteger.valueOf(0);
BigInteger second = BigInteger.valueOf(0);
for(int i = 0; i <= (x / 2); i++){
first.add( fac(x - i).divide((fac(x - 2*i).multiply(fac(i)))) );
System.out.println("First " + first.add( fac(x - i).divide((fac(x - 2*i).multiply(fac(i)))) ));
}
for(int i = 0; i <= (y / 2); i++){
second.add( fac(y - i).divide((fac(y - 2*i).multiply(fac(i)))) );
System.out.println("Second " + second.add( fac(y - i).divide((fac(y - 2*i).multiply(fac(i)))) ));
}
System.out.println("First " + first);
System.out.println("Second " + second);
System.out.println(first.multiply(second));
}
这里fac
是阶乘函数
这是终端上的内容:
points1.NumberOfOutcomes(2, 3)
First 1
First 1
Second 1
Second 2
First 0
Second 0
0
这是因为BigInteger
是不可变的,这意味着它的值不会改变。因此 first.add(x)
将创建 一个新的 BigInteger
包含计算结果,即将结果重新分配给第一个,如 first = first.add(...)
.
add
方法 BigInteger
class returns 操作数和已存储在对象本身中的值的总和。但它不会将结果存储在对象中(第一个或第二个)。
它的工作方式与
first += value;
实际上,你必须让它看起来像这样:
first = first.add(value);