你好,我刚接触 Java,想知道在控制台中读取用户输入最佳选择是什么,据我所知有三种方式:
Console console = System.console();
BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
Scanner reader = new Scanner(System.in);
我该选哪一个?为什么是这一个而不是其他的?
你好,我刚接触 Java,想知道在控制台中读取用户输入最佳选择是什么,据我所知有三种方式:
Console console = System.console();
BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
Scanner reader = new Scanner(System.in);
我该选哪一个?为什么是这一个而不是其他的?
用于读取数字的方法非常有用(尽管要注意使用nextInt()等后面跟着nextLine())。异常未经检查,因此您无需编写样板try/catch块。
Scanner(System.in)
并关闭它时,System.in也会被关闭。如果你想在其他地方再次使用new Scanner(System.in)
,那么尝试读取用户输入将会抛出异常。目前我正在尝试使用JLine
,它可以读取密码并打印给定的掩码。 - Michael HegnerConsole
不可用 || 使用Scanner
进行解析是本地化的 - user16320675为了处理不同操作系统的控制台输入,Console类以跨平台的方式实现。所有操作系统都有一个控制台/ shell,但它们的实现方式非常不同。因此,Console类为您提供了一个Java平台无关的运行时类来访问诸如密码输入等内容。
Scanner用于从流的内容中解析标记,而BufferedReader只读取流并不执行任何特殊解析。
除此之外,您还可以使用DataInputStream等。
现在BufferedReader从字符输入流中读取文本,缓冲字符以提供对字符、数组和行的高效读取。可以指定缓冲区大小,也可以使用默认大小。默认值足够大,适合大多数目的。
其中Scanner是一个简单的文本扫描器,可以使用正则表达式解析基本类型和字符串。扫描器使用分隔符模式将其输入分成标记,默认情况下匹配空格。然后可以使用各种next方法将结果标记转换为不同类型的值。Scanner用于从流内容中解析标记,而BufferedReader仅读取流并不进行任何特殊解析。
还可以查看下面的链接,它一定会帮助您……