为了账号安全,请及时绑定邮箱和手机立即绑定

这两种从用户获取输入的方式之间有什么区别?

这两种从用户获取输入的方式之间有什么区别?

慕雪6442864 2022-08-17 16:59:46
这两种从用户获取输入的方式之间有什么区别?BufferedReader br = new BufferedReader(new InputStreamReader(System.in));int num=Integer.parseInt(br.readLine());和Scanner sc = new Scanner(System.in);int num=sc.nextInt();这里假设相应地导入了包 io 和 util。
查看完整描述

2 回答

?
慕虎7371278

TA贡献1802条经验 获得超4个赞

这只是两种完全不同的动物。从流中读取时,您正在读取简单的数量...字符、字节、行。然后,正如你所展示的,你必须添加额外的代码,以某种更高级别的方式解释这些数量。

根据扫描仪的文档:

一个简单的文本扫描程序,可以使用正则表达式解析基元类型和字符串。

因此,Scanner 在流之上添加了另一个级别的功能。它解析输入。它将传入的数据分开,并尝试以各种比字节或行更复杂的方式解释它。扫描仪为您提供了许多功能,如果您使用简单的流,则必须自己编写。

为了更尖锐地回答您的具体问题...两个建议的代码块是否都为您提供了所需的结果?如果是这样,并且如果您不打算继续从流中读取其他任何内容,那么使用Scanner可能有点过分了。如果您要继续从流中继续读取整数,也许使用原始流是最好的。但是,如果您接下来要读取一行文本,或浮点值或其他任何内容,那么Scanner可能是您想要的。扫描仪具有处理换行符的智能。您必须使用基本流自己执行此操作。


查看完整回答
反对 回复 2022-08-17
?
偶然的你

TA贡献1841条经验 获得超3个赞

BufferedReader 是

  1. 大 (8 KB)

  2. 已同步(使其变慢)

  3. 仅读取字符串。

当扫描仪是

  1. 新增功能

  2. 小缓冲区 (1 KB)

  3. 未同步

  4. 可以解析用户输入并读取整型、短整型、字节型、浮点型、长整型和双精度型字符串。

请注意,使用正则表达式时的扫描程序速度很慢,这使得BufferedReader读取字符串的速度更快。


查看完整回答
反对 回复 2022-08-17
  • 2 回答
  • 0 关注
  • 91 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信