温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何解析java命令行输入

发布时间:2026-10-25 17:09:23 来源:亿速云 阅读:87 作者:小樊 栏目:编程语言

在 Java 中解析命令行输入(命令行参数),常见方式有以下几种,从简单到专业依次介绍:


一、最基础方式:main 方法的 String[] args

public class Main {
    public static void main(String[] args) {
        for (String arg : args) {
            System.out.println(arg);
        }
    }
}

运行:

java Main hello world 123

输出:

hello
world
123

✅ 适合:参数少、格式简单
❌ 缺点:不支持 -name value 这种结构


二、手动解析参数(常见写法)

public static void main(String[] args) {
    String name = null;
    int age = 0;

    for (int i = 0; i < args.length; i++) {
        if ("-name".equals(args[i])) {
            name = args[++i];
        } else if ("-age".equals(args[i])) {
            age = Integer.parseInt(args[++i]);
        }
    }

    System.out.println(name + ", " + age);
}

运行:

java Main -name Tom -age 18

✅ 灵活
❌ 容易出错、代码冗长


三、使用 Apache Commons CLI(推荐)

1. 添加依赖(Maven)

<dependency>
  <groupId>commons-cli</groupId>
  <artifactId>commons-cli</artifactId>
  <version>1.5.0</version>
</dependency>

2. 使用示例

import org.apache.commons.cli.*;

public class Main {
    public static void main(String[] args) throws ParseException {
        Options options = new Options();
        options.addOption("n", "name", true, "user name");
        options.addOption("a", "age", true, "user age");

        CommandLineParser parser = new DefaultParser();
        CommandLine cmd = parser.parse(options, args);

        String name = cmd.getOptionValue("name");
        int age = Integer.parseInt(cmd.getOptionValue("age"));

        System.out.println(name + ", " + age);
    }
}

运行:

java Main -n Tom -a 18

✅ 支持 -n Tom / --name Tom
✅ 自动校验、帮助信息


四、使用 JCommander(更现代)

Maven

<dependency>
  <groupId>com.beust</groupId>
  <artifactId>jcommander</artifactId>
  <version>1.82</version>
</dependency>

示例

import com.beust.jcommander.*;

public class Args {
    @Parameter(names = "-name", required = true)
    public String name;

    @Parameter(names = "-age")
    public int age = 0;
}

public class Main {
    public static void main(String[] args) {
        Args a = new Args();
        new JCommander(a, args);
        System.out.println(a.name + ", " + a.age);
    }
}

✅ 注解驱动
✅ 代码最简洁


五、从标准输入读取(不是参数,是运行时输入)

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入名字:");
        String name = sc.nextLine();
        System.out.println("你好," + name);
    }
}

六、选择建议

场景 推荐方式
学习 / 简单脚本 String[] args
工具类程序 Apache Commons CLI
企业级 CLI 工具 JCommander
交互式输入 Scanner

如果你有具体命令行格式(如 -f file -v --debug),我可以帮你写完整解析代码。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手