Java:如何对数字n的数字进行求和,即10 ^ 19< n< = 10 ^ 20?

时间:2015-10-05 22:23:35

标签: java digits

你好,我在操作大数字时遇到了问题,制作了一个程序,它的意思是从一个可以达到10 ^ 20的数字中求数。但它使用双打在10 ^ 19左右突破。

我应该使用什么类型的?我已经尝试过Double和Long,但我收到了大量错误的答案。

import java.util.Scanner;

public class SumDigit{

public static void main(String [] args){
    Scanner sc = new Scanner(System.in);
    int cases = sc.nextInt();

    for(int i=0; i<cases; i++){
        double number = sc.nextDouble();
        System.out.println(sum(number,0));
    }
}

public static int sum(double number, int total){
    double digit;

    if(number < 10){
        total += number;
        int totalT = (int) total;
        return totalT;
    }

    else{
        digit=(number%10);
        total += digit;
        return sum(number/10, total);
    }
}

}

2 个答案:

答案 0 :(得分:0)

此问题解决了您的问题: How to handle very large numbers in Java without using java.math.BigInteger

你也可以使用BigInteger

答案 1 :(得分:0)

使用包含您的号码的字符串最简单:

int sumOfDigits(String str) {
  int sum = 0;
  for (char c : str.toCharArray()) {
    sum += Character.digit(c, 10);
  }
  return sum;
}

(我猜你也想要一些验证,你的字符串只包含数字)