在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);
}
}
输入如下:
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);
}
}
请参考这个以更快的速度读取输入。
如果发现任何不正确的地方, 或者想分享有关上述主题的更多信息, 请写评论。