【Java专栏 01】探索Java命令行输入参数:从基础到高级

在Java编程中,命令行输入是一种常见的数据获取方式,它允许用户在程序运行时动态地提供数据。Java提供了多种方法来处理命令行输入,每种方法都有其特定的使用场景和优势。在本文中,我们将详细探讨Java如何接收命令行输入,并通过相关的代码案例来帮助您更好地理解这些概念。
01 使用
args
数组接收命令行参数
当您从命令行启动Java程序时,可以通过命令行参数将值传递给程序。这些参数可以通过
main
方法的
String[] args
参数来访问。
args
数组中的每个元素都是一个字符串,表示一个命令行参数。
代码案例:
public class CommandLineArgsExample {
public static void main(String[] args) {
if (args.length == 0) {
System.out.println("没有提供命令行参数。");
} else {
for (String arg : args) {
System.out.println("参数: " + arg);
}
运行此程序时,可以像下面这样传递参数:
java CommandLineArgsExample arg1 arg2 arg3
输出将是:
参数: arg1
参数: arg2
参数: arg3
02 使用
Scanner
类从标准输入读取
Scanner
类是Java标准库中的一个强大工具,它可以从各种输入源(包括命令行)读取数据。要使用
Scanner
从命令行读取输入,您可以将
System.in
作为输入源传递给
Scanner
的构造函数。
代码案例:
import java.util.Scanner;
public class CommandLineScannerExample {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入您的名字:");
String name = scanner.nextLine();
System.out.println("您好," + name + "!");
scanner.close();
}
在这个例子中,程序会提示用户输入他们的名字,然后使用
Scanner
读取输入,并打印出一条问候消息。
System.in
是标准输入流的引用,通常指向键盘。
03 使用
Console
类进行控制台交互
Console
类提供了一个与字符控制台交互的接口。它提供了一些方法来读取和写入字符控制台,包括读取密码。要使用
Console
类,您需要在
main
方法中调用
System.console()
方法。
代码案例:
public class CommandLineConsoleExample {
public static void main(String[] args) {
Console console = System.console();
if (console == null) {
System.err.println("当前环境没有控制台可用。");
return;
System.out.println("请输入您的名字:");
String name = console.readLine();
System.out.println("您好," + name + "!");
}
在这个例子中,我们使用
Console
类来读取用户输入。和
Scanner
类似,
Console
的
readLine()
方法会等待用户输入一行文本,然后返回该文本。需要注意的是,
Console
类可能不在所有的环境中都可用,比如在某些IDE的控制台窗口中。
04 使用
JLine
库进行更高级的命令行交互
JLine
是一个流行的Java库,用于提供丰富的命令行界面和更高级的输入处理功能。它支持历史记录、自动补全等特性。
代码案例(需要添加JLine依赖):
首先,您需要将JLine库添加到项目的依赖中。如果您使用Maven,可以在
pom.xml
中添加以下依赖:
<dependency>
<groupId>org.jline</groupId>
<artifactId>jline</artifactId>
<version>3.x.x</version> <!-- 使用最新版本 -->
</dependency>
然后,您可以使用
Reader
和
Terminal
类来创建一个交互式的命令行界面。
import org.jline.reader.LineReader;
import org.jline.reader.LineReaderBuilder;
import org.jline.terminal.Terminal;
import org.jline.terminal.TerminalBuilder;
public class JLineExample {
public static void main(String[] args) throws Exception {
Terminal terminal = TerminalBuilder.builder().system(true).build();
LineReader reader = LineReaderBuilder.builder()
.terminal(terminal)
.build();
String line;
while ((line = reader.readLine("请输入您的名字:")) != null) {
System.out.println("您好," + line + "!");