2015-10-05 38 views
0

您好,我在操作大量數據時遇到了問題,製作了一個程序,它意味着從一個可以達到10^20的數字中總結數字。但是在10^19左右的時候打破了雙打。Java:我該如何總結10^19 <n <= 10^20的龐大數字n的位數?

我應該使用什麼類型?我已經嘗試過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); 
    } 
} 

} 
+5

你嘗試過'BigInteger'嗎?這支持任意大的整數。 –

+0

不知道大整數存在,讓我看看它。謝謝。 – Alan

+0

或者就此而言,只需使用Character.digit(char,radix)'。 –

回答

0

這可能是最簡單的一個字符串做包含您的號碼:

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

(我想你還想要一些驗證,你的字符串只包含數字)

+0

偉大的方法,這是一個很好的方式來做到這一點,謝謝。 – Alan

相關問題