2017-06-11 4 views
1

開始されたBigIntegerに大きな数字を追加しようとしていますが、入力の種類が0の場合は出力が0になっています。Java:別のBigIntegerを追加できません

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は、それが新しいBigIntegerインスタンスを返すので、その値を変更しないBigIntegerインスタンス上add()を呼び出し、不変です。

戻り値を無視するので、sum_negsum_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++; 
      } 
関連する問題