Java上添加字符串时的奇怪行为

时间:2018-10-21 10:50:18

标签: java string casting addition charat

当在字符串中添加两个字符并将其转换为整数时,我注意到了一些奇怪的事情。
对于以下代码,我将s1 =“ +1”和s2 =“ +2”作为输入:

String s1 = scanner.next();
String s2 = scanner.next();

System.out.println(s1.charAt(1));
System.out.println((int)s1.charAt(1));

输出为:
1
49

然后我还尝试了以下操作:

输入:
+1
+2

代码:

System.out.println(s1);
System.out.println(s2);
System.out.println((int)(s1.charAt(1)) + (int)(s2.charAt(1)));

输出:
+1
+2
99

为什么会这样?为什么输出不是“ 3”,我该怎么做才能使输出变为三?

3 个答案:

答案 0 :(得分:1)

这是因为当您将字符转换为整数时,它会为您提供该字符的ascii值,而不是将其转换。

ascii值是1 = 49和2 = 50,所以49 + 50 = 99。

您应该使用解析,而不是类型转换。

Integer.parseInt(s1.charAt(1));将给您1而不是49。

尝试一下。

答案 1 :(得分:0)

1的ASCII值为“ 49”,fo 2的ASCII值为“ 50”,因此,当您执行s1.charAt(1))+(int)(s2.charAt(1))时,其打印内容为“ 99英寸,而不是3英寸。

ASCII参考

答案 2 :(得分:0)

(int)(s1.charAt(1)分别返回字符1和2的ASCII码49和50。因此49 + 50 =99。

要从整数char中获取整数值,请使用Character.getNumericValue(c)。对于字符串数据,请使用Integer.parseInt(s)