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



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

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是相应导入的。

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

根据扫描仪的文档:

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

因此,扫描仪在流的顶部添加了另一个功能。它解析了输入。它将传入数据分开,并试图以各种方式来解释它,这些方式比仅仅是字节或线更复杂。扫描仪为您提供了很多功能,如果您使用了一个简单的流,则必须写自己。

要更明确地回答您的特定问题...提出的两个代码块是否会给您带来所需的结果?如果是这样,并且如果您不愿继续阅读流中的其他任何内容,那么使用扫描仪也许是过分的。如果您要继续从流中读取整数,那么最好使用原始流。但是,如果您接下来要阅读文本或浮点值或其他任何内容,那么扫描仪可能是您想要的。扫描仪具有处理新线的智能。您必须用基本流来自己做。

bufferedreader是

  1. 年龄较大
  2. 大(8 kb)
  3. 同步(使其慢)
  4. 只读字符串。

扫描仪是

  1. 小缓冲区(1 kb)
  2. 不同步
  3. 可以解析用户输入并读取int,简称,字节,float,long and double fack acting。

请注意,扫描仪在使用正则速度时很慢,这使得bufferedReader更快地阅读字符串。

相关内容

  • 没有找到相关文章

最新更新