BufferedReader与Console vs Scanner

Vic*_*res 41 java java-io

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

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

我应该选择哪一个?为什么那个而不是其他的?

tom*_*tom 53

的BufferedReader

  • 自Java 1.1以来
  • 抛出已检查的异常
  • 可以读取字符,字符数组和行
  • 快速

扫描器

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

安慰

  • 自Java 1.6以来
  • 不抛出已检查的异常
  • 可以读行
  • 底层读者可以读取字符和字符数组(在行边界处停止)
  • 并不总是可用(例如Eclipse)
  • 可以读取密码(即不显示字符而读取)

建议:扫描仪

读取数字的方法非常有用.未选中异常,因此您不必编写样板try/catch块.

  • 另请参阅http://stackoverflow.com/questions/2231369/scanner-vs-bufferedreader?rq=1上的答案 (2认同)