Java中的toCharArray有效,但元素总和无效
我正在测试以下代码:Java中的toCharArray有效,但元素总和无效,java,arrays,eclipse,recursion,character,Java,Arrays,Eclipse,Recursion,Character,我正在测试以下代码: 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 =
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;
}
结果必须是--->数组是5,3,2,1--->结果=5+3+2+1您正在添加字符串字符的数字unicode值。幸运的是,这些值是连续的,因此您可以通过减去
'0'
的值将这些面值转换为它们表示的数字:
for (int j = 0; j < concatenatedN.length; j++) {
sumDigits = sumDigits + (int)(concatenatedN[j] - '0');
}
for(int j=0;j
当您将char
转换为int
时,它将转换为其基础int值,即其值。这显然不是你想要的。相反,您可以使用获取int
值:
sumDigits = sumDigits + Character.getNumericValue(concatenatedN[j]);
将
char
强制转换为int
时,它将返回字符的ascii码,这不是您想要的,而是您期望的内容和实际输入的内容。另外,在询问之前不要忘记调试自己。所以这不是一个免费的调试服务。如果您在添加数组中的单个值时打印它们,您可以自己发现这一点。第一个53
=5是一个提示。
sumDigits = sumDigits + Character.getNumericValue(concatenatedN[j]);