首页 > 解决方案 > Java中的toCharArray有效,但元素总和无效

问题描述

我正在测试以下代码:

    static int superDigit(String n, int k) {
    char[] concatenatedN = n.toCharArray();        
    int superDigit = 0;
    int sumDigits = 0;
    char[] totalSum;

    if (n.length() > 0) {
        sumDigits = 0;
        for (int j = 0; j < concatenatedN.length; j++) {
            sumDigits = sumDigits + (int)concatenatedN[j]; 
            System.out.println(" sumDigits: " + sumDigits + " ,concatenatedN[j]: " + concatenatedN[j]);
        }      
        totalSum = String.valueOf(sumDigits * k).toCharArray();
        superDigit = sumDigitsRecursive(totalSum);

    } //end if
    return superDigit;
}

由于某种原因,我不知道 sumDigits 变量必须是数组元素的总和(concatenatedN[j]),但发生了一些奇怪的事情,而不是总和,而是显示以下输出(当我执行 System.out.println 时):

 sumDigits: 53 ,concatenatedN[j]: 5
 sumDigits: 104 ,concatenatedN[j]: 3
 sumDigits: 154 ,concatenatedN[j]: 2
 sumDigits: 203 ,concatenatedN[j]: 1

结果必须是 ---> 数组是 5,3,2,1 ---> 结果 = 5 + 3 + 2 + 1

标签: javaarrayseclipserecursioncharacter

解决方案


您正在添加字符串字符的数字 unicode 值。幸运的是,这些值是连续的,因此您可以通过减去 的值将这些面值转换为它们所代表的数字'0'

for (int j = 0; j < concatenatedN.length; j++) {
    sumDigits = sumDigits + (int)(concatenatedN[j] - '0'); 
} 

推荐阅读