Java 上字符串添加的奇怪行为
Strange behaviour at String addition on Java
我注意到在将两个字符转换为整数时在字符串中添加两个字符时有些奇怪。
对于以下代码,我将 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”,我该怎么做才能让它变成三?
1 的 ASCII 值是“49”,2 的 ASCII 值是“50”,因此当你做 s1.charAt(1)) + (int)(s2.charAt(1 )), 它打印“99”而不是 3。
ASCII 引用
这是因为当您将字符类型转换为整数时,它会为您提供该字符的 ascii 值而不是转换它。
ascii 值 1 = 49 和 2 = 50 所以,49 + 50 = 99。
您应该使用解析而不是类型转换。
Integer.parseInt(s1.charAt(1));
会给你 1 而不是 49。
试试吧。
(int)(s1.charAt(1)
return 字符1和2的ASCII码分别为49和50。所以 49 + 50 = 99。
要从整数字符中获取整数值,请使用 Character.getNumericValue(c)
。对于字符串数据,使用 Integer.parseInt(s)
.
我注意到在将两个字符转换为整数时在字符串中添加两个字符时有些奇怪。
对于以下代码,我将 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”,我该怎么做才能让它变成三?
1 的 ASCII 值是“49”,2 的 ASCII 值是“50”,因此当你做 s1.charAt(1)) + (int)(s2.charAt(1 )), 它打印“99”而不是 3。
ASCII 引用
这是因为当您将字符类型转换为整数时,它会为您提供该字符的 ascii 值而不是转换它。
ascii 值 1 = 49 和 2 = 50 所以,49 + 50 = 99。
您应该使用解析而不是类型转换。
Integer.parseInt(s1.charAt(1));
会给你 1 而不是 49。
试试吧。
(int)(s1.charAt(1)
return 字符1和2的ASCII码分别为49和50。所以 49 + 50 = 99。
要从整数字符中获取整数值,请使用 Character.getNumericValue(c)
。对于字符串数据,使用 Integer.parseInt(s)
.