Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java上字符串添加的奇怪行为_Java_String_Casting_Addition_Charat - Fatal编程技术网

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引用


这是因为当您将字符强制转换为整数时,它会给出该字符的ascii值,而不是转换它

ascii值为1=49和2=50,因此,49+50=99

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

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