51

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

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

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

4

3 回答 3

59

缓冲阅读器

扫描器

安慰

推荐:扫描仪

读取数字的方法非常有用(尽管在使用 nextInt() 等后跟 nextLine() 时要小心)。异常是未经检查的,因此您不必编写样板的 try/catch 块。

于 2013-07-14T10:49:06.300 回答
4

除此之外,您还可以使用 datainputstream 等。

现在 BufferedReader 从字符输入流中读取文本,缓冲字符以提供字符、数组和行的有效读取。可以指定缓冲区大小,也可以使用默认大小。对于大多数用途,默认值足够大。

Scanner 是一个简单的文本扫描器,可以使用正则表达式解析原始类型和字符串。Scanner 使用分隔符模式将其输入分解为标记,默认情况下匹配空格。然后可以使用各种 next 方法将生成的标记转换为不同类型的值。Scanner 用于从流的内容中解析令牌,而 BufferedReader 只是读取流并且不进行任何特殊解析。

还检查下面的链接,它一定会帮助你.......

http://www.javawebtips.com/50474/

于 2013-07-14T06:35:00.943 回答
4

控制台类以独立于平台的方式实现,以处理不同操作系统的控制台输入。所有操作系统都有一个控制台/外壳,但它们在实现上完全不同。因此,Console 类为您提供了一个独立于 Java 平台的运行时类来访问密码输入等内容。

Scanner 用于从流的内容中解析令牌,而 BufferedReader 只是读取流并且不进行任何特殊解析。

于 2013-07-14T06:22:25.140 回答