使用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键,对吗?