我正在尝试向启动的BigInteger添加一些大数字但是我的输出为0表示任何类型的输入,请帮我一样。
import java.util.Scanner;
import java.math.BigInteger;
public class NEO01 {
public static void main(String []args){
Scanner in = new Scanner(System.in);
try{
int t = in.nextInt();
for(int i=0; i<t; i++){
int n = in.nextInt();
long[] a = new long[n];
long count = 0;
BigInteger sum_non_neg = new BigInteger("0");
BigInteger sum_neg = new BigInteger("0");
BigInteger s;
for(int j=0; j<n; j++){
a[j] = in.nextInt();
if(a[j]<0){
s = BigInteger.valueOf(a[j]);
sum_neg.add(s);
}
else{
s = BigInteger.valueOf(a[j]);
sum_non_neg.add(s);
count++;
}
}
s = BigInteger.valueOf(count);
sum_non_neg.multiply(s);
sum_non_neg.add(sum_neg);
System.out.println(sum_non_neg);
}
}
finally{
in.close();
}
}
}
答案 0 :(得分:3)
BigInteger
是不可变的,因此在add()
实例上调用BigInteger
并不会更改其值,它会返回一个新的BigInteger
实例。
由于您忽略了返回的值,因此sum_neg
和sum_non_neg
保持不变。
您应该将添加结果分配回变量:
if(a[j]<0){
s = BigInteger.valueOf(a[j]);
sum_neg = sum_neg.add(s);
}
else{
s = BigInteger.valueOf(a[j]);
sum_non_neg = sum_non_neg.add(s);
count++;
}