当前位置: 首页 > 面试题库 >

BufferedReader vs控制台vs扫描仪

慕容昊焜
2023-03-14
问题内容

嗨,我是新手Java,我想知道在控制台中读取用户Input的最佳选择是什么,据我所知有3种方法可以做到:

  1. Console console = System.console();
  2. BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
  3. Scanner reader = new Scanner(System.in);

我应该选择哪一个?为什么选择一个而不选择另一个?


问题答案:

缓冲读取器

  • 从Java 1.1开始
  • 引发检查异常
  • 可以读取字符,字符数组和行
  • 快速

扫描器

  • 从Java 1.5开始
  • 不抛出检查异常
  • 可以读取行,空格分隔的标记,正则表达式分隔的标记和数字
  • 难以阅读单个字符

安慰

  • 从Java 1.6开始
  • 不抛出检查异常
  • 可以读线
  • 底层读者可以读取char和char数组(在行边界处停止)
  • 并非总是可用(例如Eclipse)
  • 可以读取密码(即在不显示字符的情况下读取)

建议:扫描仪

读取数字的方法非常有用。异常未经检查,因此您不必编写样板try / catch块。



 类似资料:
  • 我想从标准输入中读取一个双数,但是我总是得到这个异常: Java . util . inputmismatchexception 如果输入是整数,那没问题,但是如果是双精度的,我会得到异常。 线程“main”Java . util . inputmismatchexception Java . util . scanner . throw for(scanner . Java:864)Java .

  • 问题内容: 我有此方法,并且从控制台(键盘)读取了一个整数序列,并将所有整数添加到ArrayList中,我使用Scanner类读取了这些数字,但是在for循环中不起作用,它抛出“ java.util.NoSuchElementException”。 问题答案: 首先,使用一个扫描仪,而不是每次都重新创建一个扫描仪。此外,您的for循环还会多循环一次。 这对我来说很好,最后列表包含了我输入的所有数字

  • 我试图通过使用命令“java postfix 错误: 请在java.util.scanner.throwfor(未知源) 在java.util.scanner.next(未知源) 在java.util.scanner.nextInt(未知源) 在java.util.scanner.nextInt(未知源) 在java.util.scanner.nextInt(未知源) 在java.util.sca

  • 我想了解一些关于Spring的东西。我正在尝试配置它,但是有些东西我不明白,因为Spring似乎不认识我的控制器。 这是我的web.xml 这就是servlet 控制器:

  • 问题内容: 我需要一种通过Jenkins脚本控制台设置“扫描组织触发器”的方法。这很接近,但是仅显示多分支或组织扫描触发器(如果已存在): https://github.com/cloudbees/jenkins- scripts/blob/master/setOrgFolderIndex.groovy 问题答案: 这是我制作的可检测多分支或组织触发器的脚本。如果项目尚不存在,它将创建一个触发器。

  • 我可以在Android 10上使用前台服务在后台进行工作BLE扫描。我的应用程序具有in-manifest Foreground\u服务,并在启动时从用户那里获得premissions ACCESS\u FINE\u位置和ACCESS\u background\u位置。然后用BLE扫描启动前台服务。当屏幕在服务上执行扫描和查找设备时,但当屏幕离开前台时,服务停止工作,扫描停止。 正在启动服务: 使