java - 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
解决方案
您正在添加字符串字符的数字 unicode 值。幸运的是,这些值是连续的,因此您可以通过减去 的值将这些面值转换为它们所代表的数字'0'
:
for (int j = 0; j < concatenatedN.length; j++) {
sumDigits = sumDigits + (int)(concatenatedN[j] - '0');
}
推荐阅读
- django - 带有标签自定义过滤器的 django 模板
- c++ - 将成员添加到作为接口的抽象类中是否是 C++ 中的一种好习惯?
- reactjs - React 钩子选择可重用组件在设置状态时丢失选项值
- sql - 从外部相同数据库 2 更新数据库 1 上的表中的字段
- if-statement - Excel ISERROR 公式返回 #VALUE!即使我使用 IF 函数返回空白
- django - 在 alpine docker 上添加 GeoDjango 依赖项
- python - 使用 ElementTree 在 XML 文件末尾找不到元素
- vb.net - 将焦点设置到另一个控件可防止当前控件值在 VB.NET 中更改
- scala - scalaexplode方法笛卡尔积多重数组
- symfony - Symfony 序列化器组件 AbstractNormalizer::CALLBACKS 非规范化