Java从控制台读取输入的方法
在Java中,有四种不同的方式可以在命令行环境(控制台)中读取用户的输入。
1.使用缓冲阅读器类
这是Java经典的取输入方式,在JDK1.0中引入。此方法通过将 System.in(标准输入流)包装在 InputStreamReader 中来使用,InputStreamReader 包装在 BufferedReader 中,我们可以在命令行中读取用户的输入。
- 输入被缓冲以实现高效读取。
- 包装代码很难记住。
执行:
Java
// 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
// 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);
}
}
Java
// 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("You entered string " + name);
}
}
Java
// Program to check for command line arguments
class Hello {
public static void main(String[] args)
{
// check if length of args array is
// greater than 0
if (args.length > 0) {
System.out.println(
"The command line arguments are:");
// iterating the args array and printing
// the command line arguments
for (String val : args)
System.out.println(val);
}
else
System.out.println("No command line "
+ "arguments found.");
}
}
输入:
Geek
输出:
辅助空间:O(1)
Geek
笔记:
要读取其他类型,我们使用 Integer.parseInt()、Double.parseDouble() 等函数。要读取多个值,我们使用 split()。
2. 使用 Scanner 类
这可能是接受输入的最首选方法。 Scanner 类的主要目的是使用正则表达式解析原始类型和字符串,但是,它也可用于在命令行中读取用户的输入。
- 从标记化输入中解析基元(nextInt()、nextFloat()、...)的便捷方法。
- 正则表达式可用于查找标记。
- 阅读方式不同步
要查看更多差异,请参阅本文。
Java
// 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);
}
}
输入:
GeeksforGeeks
12
3.4
输出:
You entered string GeeksforGeeks
You entered integer 12
You entered float 3.4
3. 使用控制台类
它已成为从命令行读取用户输入的首选方式。此外,它可以用于读取类似密码的输入,而不用回显用户输入的字符;也可以使用格式字符串语法(如 System.out.printf())。
好处:
- 读取密码而不回显输入的字符。
- 读取方法是同步的。
- 可以使用格式字符串语法。
- 不适用于非交互环境(例如 IDE)。
Java
// 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("You entered string " + name);
}
}
输入:
GeeksforGeeks
输出:
You entered string GeeksforGeeks
4.使用命令行参数
最常用于竞争性编码的用户输入。命令行参数以字符串格式存储。 Integer 类的 parseInt 方法将字符串参数转换为 Integer。同样,对于执行期间的浮动和其他。 args[] 的用法出现在这种输入形式中。信息的传递发生在程序运行期间。命令行提供给 args[]。这些程序必须在 cmd 上运行。
代码:
Java
// Program to check for command line arguments
class Hello {
public static void main(String[] args)
{
// check if length of args array is
// greater than 0
if (args.length > 0) {
System.out.println(
"The command line arguments are:");
// iterating the args array and printing
// the command line arguments
for (String val : args)
System.out.println(val);
}
else
System.out.println("No command line "
+ "arguments found.");
}
}
命令行参数:
javac GFG1.java
java Main Hello World
输出:
The command line arguments are:
Hello
World
请参考这里以获取更快的读取输入的方法。