这个问题更多的是要求知识而不是解决方案:我今天在代码中发现了一些我不理解的奇怪行为,并且无法找到解释。
我编写了一个简单的循环,它遍历一串数字和字符,并执行以下操作:
for(char c : numberString.toCharArray()){
number += (int)c * 2;
}
令我惊讶和沮丧的是,在调试时,我发现这并没有像我预期的那样倍增。例如;
char example = '9';
(int)example * 2;
...以114返回!这里发生了什么,我错过了?
此外,对于任何需要答案的人来说,我得到了正确答案,而不是使用:
Integer.parseInt(Character.toString(example)) * 2;
我不确定是最好的解决方案;但它至少是一个解决方案。
答案 0 :(得分:1)
用这一行:
(int)example * 2;
你说,你想将char
变量中存储的example
的 ASCII代码乘以2.看看ASCII表here注意char
'9'
的ASCII码等于57。
您可能需要考虑使用Character.getNumericValue(example);
。它将提供对int
值的操作,该值对应于作为参数传递的char
。
还请查看Java API文档对该方法here的说法。
答案 1 :(得分:0)
你的等式的结果是114,因为当你将任何char转换为int时,你得到它的ASCII码。在这种情况下,代码为' 9'是57,所以2 * 57是114。
您可以使用
String.valueOf(example);