使用read()的Java io

使用read()的Java io,java,io,Java,Io,我正在尝试这个代码片段- import java.io.*; class demo { public static void main(String args[]) throws IOException { BufferedReader br= new BufferedReader(new InputStreamReader(System.in)); int c;

我正在尝试这个代码片段-

import java.io.*;

class demo
    {
        public static void main(String args[]) throws IOException
            {
                BufferedReader br= new BufferedReader(new InputStreamReader(System.in));
                int c;
                do
                    {
                        c= (char)br.read();
                        System.out.println(c);
                    }while(c!='q');
            }
    } 
现在当我给出输入-22时 产量为-50 50 13 十,

我理解输出50,50,但为什么编译器打印13和10? 请帮忙。
谢谢

我认为13和10是CR/LF:行的末尾。

您的输入是

22<enter>
2的ascii值是50,因此是2250

按Enter键可使Windows在键缓冲区中存储回车码ASCII 13,后跟新行码ASCII 10,因此您可以在输出中看到13和10


你也可以在这里引用一个好的博客

你不需要一个缓冲阅读器。我为什么不需要一个缓冲阅读器呢?br in br.read是缓冲读取器的对象!如果我错了,请纠正我。但不必如此。用BufferedReader装饰InputStreamReader是毫无意义的,因为您不使用br作为BufferedReader,而是作为读取器。我认为如果您只想读取输入,使用Scanner类会更好。是的,我明白了!但它们是回车符和馈送符,ASCII码不应根据代码段打印。请建议我如何摆脱它们@用户3788040您键入22然后按Enter键,对吗?