Java使用3种方法从控制台读取输入

在Java中, 有三种不同的方式可以在命令行环境(控制台)中从用户读取输入。
1.使用缓冲读取器类
这是JDK1.0中引入的Java经典输入方法。通过将System.in(标准输入流)包装在InputStreamReader(包装在BufferedReader中)中来使用此方法, 我们可以在命令行中从用户读取输入。
输入被缓冲,以便有效读取。
包装代码很难记住。
程序:

// Java program to demonstrate BufferedReader import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Test { public static void main(String[] args) throws IOException { //Enter data using BufferReader BufferedReader reader = new BufferedReader( new InputStreamReader(System.in)); // Reading data using readLine String name = reader.readLine(); // Printing the read line System.out.println(name); } }

【Java使用3种方法从控制台读取输入】输入如下:
Geek

输出如下:
Geek

注意:要读取其他类型, 我们使用Integer.parseInt(), Double.parseDouble()之类的函数。要读取多个值, 我们使用split()。
2.使用Scanner类
这可能是最优选的输入方法。 Scanner类的主要目的是使用正则表达式解析原始类型和字符串, 但是它也可以用于在命令行中从用户读取输入。
优点:
从标记化的输入中解析基元(nextInt(), nextFloat()等)的便捷方法。
正则表达式可用于查找标记。
缺点:
读取方法不同步
要查看更多差异, 请参阅这个文章。
// Java program to demonstrate working of Scanner in Java import java.util.Scanner; class GetInputFromUser { public static void main(String args[]) { // Using Scanner for Getting Input from User Scanner in = new Scanner(System.in); String s = in.nextLine(); System.out.println( "You entered string " +s); int a = in.nextInt(); System.out.println( "You entered integer " +a); float b = in.nextFloat(); System.out.println( "You entered float " +b); } }

输入如下:
lsbin 12 3.4

输出如下:
You entered string lsbin You entered integer 12 You entered float 3.4

3.使用控制台类
它已成为从命令行读取用户输入的首选方法。此外, 它可用于读取类似密码的输入, 而无需回显用户输入的字符;也可以使用格式字符串语法(例如System.out.printf())。
优点:
  • 读取密码而不回显输入的字符。
  • 读取方法是同步的。
  • 可以使用格式字符串语法。
缺点:
在非交互式环境(例如在IDE中)中不起作用。
// Java program to demonstrate working of System.console() // Note that this program does not work on IDEs as // System.console() may require console public class Sample { public static void main(String[] args) { // Using Console to input data from user String name = System.console().readLine(); System.out.println(name); } }

请参考这个以更快的速度读取输入。
如果发现任何不正确的地方, 或者想分享有关上述主题的更多信息, 请写评论。

    推荐阅读