当前位置:  开发笔记 > 编程语言 > 正文

与java中的缓冲读者混淆

如何解决《与java中的缓冲读者混淆》经验,为你挑选了1个好方法。

BufferedReader用的InputStreamReaderSystem.in.在BufferedReader使用read()从方法InputStreamReader,以从标准输入流中读取的数据System.in.现在让我们来看看这个read()方法的API .

[...]此方法将阻塞,直到输入数据可用,检测到流的末尾或抛出异常.

在此上下文中,阻止装置等待用户通过控制台使用Enter键确认输入数据.
考虑到这一点,让我们检查你的案例.
1. int b= br.read();没有输入任何内容,因此此方法会阻塞,直到用户键入内容然后打印第一个字符的ascci值.
2. String a = br.readLine(); 没有输入任何内容,因此此方法会阻塞,直到用户键入内容然后打印整行.
3.

int b= br.read();

让图像用户a 使用Enter键键入 确认,表示输入是a\n.现在read()读取第一个字符a.

String a = br.readLine();

read()调用不会阻止并请求用户输入,因为还有未使用的输入\n.所以readLine()会读\n.
4.

String a = br.readLine();

要求用户输入通过Enter键确认的输入.整行将被阅读.

int b= br.read();

没有未消耗的数据,因为readLine()已经读取了包括\n字符在内的整行.所以这个read()调用块和用户被要求输入.



1> ArcticLord..:

BufferedReader用的InputStreamReaderSystem.in.在BufferedReader使用read()从方法InputStreamReader,以从标准输入流中读取的数据System.in.现在让我们来看看这个read()方法的API .

[...]此方法将阻塞,直到输入数据可用,检测到流的末尾或抛出异常.

在此上下文中,阻止装置等待用户通过控制台使用Enter键确认输入数据.
考虑到这一点,让我们检查你的案例.
1. int b= br.read();没有输入任何内容,因此此方法会阻塞,直到用户键入内容然后打印第一个字符的ascci值.
2. String a = br.readLine(); 没有输入任何内容,因此此方法会阻塞,直到用户键入内容然后打印整行.
3.

int b= br.read();

让图像用户a 使用Enter键键入 确认,表示输入是a\n.现在read()读取第一个字符a.

String a = br.readLine();

read()调用不会阻止并请求用户输入,因为还有未使用的输入\n.所以readLine()会读\n.
4.

String a = br.readLine();

要求用户输入通过Enter键确认的输入.整行将被阅读.

int b= br.read();

没有未消耗的数据,因为readLine()已经读取了包括\n字符在内的整行.所以这个read()调用块和用户被要求输入.

推荐阅读
ERIK又
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有