Java上字符串添加的奇怪行为
在将两个字符转换为整数时,我注意到在字符串中添加两个字符时出现了一些奇怪的情况。Java上字符串添加的奇怪行为,java,string,casting,addition,charat,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 +二, 代码: 输出: +1 +2
对于以下代码,我将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
+二, 代码: 输出:
+1
+2
九十九 为什么是这样?为什么输出不是“3”,我能做些什么才能把它变成3?1的ASCII值是“49”,2的ASCII值是“50”,因此,当你做s1.charAt(1))+(int)(s2.charAt(1)),它的打印是“99”,而不是3 ASCII引用
Integer.parseInt(s1.charAt(1))代码>将给您1而不是49
试一试。该(int)(s1.charAt(1)
分别返回字符1和2的ASCII码49和50。因此49+50=99
要从整型字符中获取整数值,请使用Character.getNumericValue(c)
。对于字符串数据,请使用integer.parseInt(s)
,您可以在这里找到答案:(情况正好相反),因为您知道(int)s1.charAt(1)
是49,并且可以很容易地找到(int)s2.charAt(1)
是50,为什么你不希望它们的总和是99?在这种情况下,我可以通过添加“-48”来纠正差异吗?因为我不允许使用类型转换方法。是的,我接受它。问题是,我必须等到可以的时候,但现在我可以了。
System.out.println(s1);
System.out.println(s2);
System.out.println((int)(s1.charAt(1)) + (int)(s2.charAt(1)));