Java中的read函数

时间:2018-07-19 21:16:40

标签: java bufferedreader

我有此代码:

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

为什么我得到这个输出? 我不明白读取功能的工作原理。 我尝试使用跳过功能,但也没有得到正确的答案。

2 个答案:

答案 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。

选项: