java中的read函数

java中的read函数,java,bufferedreader,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(); c

我有以下代码:

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
为什么我得到这个输出? 我不明白read函数是如何工作的。
我尝试使用跳过功能,但也没有得到正确答案。

您正在以字符形式读取输入。您的输入为三个字符(1、2和换行):

  • 1
    的ASCII值为49
  • 2
    的ASCII值为50
  • 换行
    ,ASCII值为10

然后,将这三个字符按ASCII值相加,总数为109。

您正在以字符形式读取输入。您的输入为三个字符(1、2和换行):

  • 1
    的ASCII值为49
  • 2
    的ASCII值为50
  • 换行
    ,ASCII值为10

然后将这三个字符按ASCII值相加,总数为109。

问题在于,您误解了调用时如何返回字符

读取的字符,范围为0到65535(0x00-0xffff)之间的整数,如果已到达流的末尾,则为-1

read
方法返回一个
int
,以便返回字符的Unicode代码。对于简单的字母和数字,Unicode与ASCII重叠,其中
1
为49,
2
为50,换行符为10。这些代码的总和是109

选项:

  • 使用一个
  • 使用
    Integer.parseInt
    将字符串解析为整数

    • 问题在于,您误解了调用时如何返回字符

      读取的字符,范围为0到65535(0x00-0xffff)之间的整数,如果已到达流的末尾,则为-1

      read
      方法返回一个
      int
      ,以便返回字符的Unicode代码。对于简单的字母和数字,Unicode与ASCII重叠,其中
      1
      为49,
      2
      为50,换行符为10。这些代码的总和是109

      选项:

      • 使用一个
      • 使用
        Integer.parseInt
        将字符串解析为整数

      Java不使用ASCII。请参阅。@TomBlodget true,但Unicode与ASCII向后兼容,因此,如果文本仅由ASCII字符组成,它们也与Unicode代码点相同。那么为什么要提到ASCII呢?您是否编写了使用它的代码?@TomBlodget当您处于ASCII的范围内时,谈论ASCII就更简单了。就我个人而言,我写了很多代码来处理只需要ASCII码或由于转义机制而需要的协议。@kumesana好的,您可能会引用RFCs或其他相关规范。但是学习Java(JavaScript、C#、VB4、VBA、F#、VB等)的人正在使用Unicode,应该知道这一点。Java不使用ASCII。请参阅。@TomBlodget true,但Unicode与ASCII向后兼容,因此,如果文本仅由ASCII字符组成,它们也与Unicode代码点相同。那么为什么要提到ASCII呢?您是否编写了使用它的代码?@TomBlodget当您处于ASCII的范围内时,谈论ASCII就更简单了。就我个人而言,我写了很多代码来处理只需要ASCII码或由于转义机制而需要的协议。@kumesana好的,您可能会引用RFCs或其他相关规范。但是学习Java(JavaScript、C#、VB4、VBA、F#、VB等)的人正在使用Unicode,应该知道这一点。第二个问题是我不能输入第三个字母。输出在第二次输入后立即出现。第二个问题是我不能输入第三个字母。输出在第二次输入后立即出现