为了账号安全,请及时绑定邮箱和手机立即绑定

Java 中的 toCharArray 有效但元素总和无效

Java 中的 toCharArray 有效但元素总和无效

弑天下 2021-12-10 16:32:35
我正在测试以下代码段:    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
查看完整描述

2 回答

?
阿晨1998

TA贡献2037条经验 获得超6个赞

当您将 a转换char为 an 时,int它会转换为其基础 int 值,即其acsii值。这显然不是你想要的。相反,您可以使用Character.getNumericValue()来获取int值:

sumDigits = sumDigits + Character.getNumericValue(concatenatedN[j]);


查看完整回答
反对 回复 2021-12-10
?
元芳怎么了

TA贡献1798条经验 获得超7个赞

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


for (int j = 0; j < concatenatedN.length; j++) {

    sumDigits = sumDigits + (int)(concatenatedN[j] - '0'); 


查看完整回答
反对 回复 2021-12-10
  • 2 回答
  • 0 关注
  • 167 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信