当在字符串中添加两个字符并将其转换为整数时,我注意到了一些奇怪的事情。
对于以下代码,我将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”,我该怎么做才能使输出变为三?
答案 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)
。