我有此代码:
public class test {
public static void main(String args[]) throws IOException {
BufferedReader in = new BufferedReader(new
InputStreamReader(System.in));
char x =(char)in.read();
char y =(char)in.read();
char z =(char)in.read();
System.out.print(x+y+z);
}
}
和此输入:
1
2
,输出为:
109
为什么我得到这个输出? 我不明白读取功能的工作原理。 我尝试使用跳过功能,但也没有得到正确的答案。
答案 0 :(得分:3)
您正在读取输入的字符。您输入的是三个字符(1、2和换行符):
1
,ASCII值为49。2
,ASCII值为50。line feed
,ASCII值为10。然后,您将这三个字符按其ASCII值相加,总计为109。
答案 1 :(得分:2)
问题是您误解了调用read()
时如何返回字符。
读取的字符,范围为0到65535(0x00-0xffff)之间的整数,如果已到达流的末尾,则为-1
read
方法返回一个int
,因此它可以返回该字符的Unicode代码。对于简单的字母和数字,Unicode与ASCII重叠,其中1
为49,2
为50,换行符为10。这些代码的总和为109。
选项:
Scanner
and its nextInt
method。BufferedReader
's readLine
method,并使用Integer.parseInt
将字符串解析为整数。