奇数乘以一个角色的Int

时间:2018-02-18 21:23:17

标签: java int character multiplying

这个问题更多的是要求知识而不是解决方案:我今天在代码中发现了一些我不理解的奇怪行为,并且无法找到解释。

我编写了一个简单的循环,它遍历一串数字和字符,并执行以下操作:

for(char c : numberString.toCharArray()){
    number += (int)c * 2;
}

令我惊讶和沮丧的是,在调试时,我发现这并没有像我预期的那样倍增。例如;

char example = '9';
(int)example * 2;

...以114返回!这里发生了什么,我错过了?

此外,对于任何需要答案的人来说,我得到了正确答案,而不是使用:

Integer.parseInt(Character.toString(example)) * 2;

我不确定是最好的解决方案;但它至少是一个解决方案。

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);