24

我正在尝试检测是否输入了“a”作为第一个字符串参数。

4

9 回答 9

40

如果您打算将其扩展到单个 arg之外,请使用apache commons cli 。

“Apache Commons CLI 库提供了一个 API,用于解析传递给程序的命令行选项。它还能够打印帮助消息,详细说明命令行工具可用的选项。”

Commons CLI 支持不同类型的选项:

  • 类似 POSIX 的选项(即 tar -zxvf foo.tar.gz)
  • GNU 喜欢长选项(即 du --human-readable --max-depth=1)
  • 类似 Java 的属性(即 java -Djava.awt.headless=true -Djava.net.useSystemProxies=true Foo)
  • 附加价值的空头期权(即 gcc -O2 foo.c)
  • 带有单个连字符的长选项(即 ant -projecthelp)
于 2009-04-04T01:02:45.113 回答
37
public class YourClass {
    public static void main(String[] args) {
        if (args.length > 0 && args[0].equals("a")){
            //...
        }
    }
}
于 2009-04-04T00:16:51.027 回答
17

每个 Java 程序都以

public static void main(String[] args) {

作为参数的类型数组保存String程序的命令行参数。main()如果用户将您的程序运行为

$ java myProgram a

然后args[0]将保存字符串“a”。

于 2009-04-04T00:17:52.990 回答
5

命令行参数在第一个String[]参数中传递给main(),例如

public static void main( String[] args ) {
}

在上面的示例中,args包含所有命令行参数。

对所提出问题的简短而甜蜜的回答是:

public static void main( String[] args ) {
    if( args.length > 0 && args[0].equals( "a" ) ) {
        // first argument is "a"
    } else {
        // oh noes!?
    }
}
于 2009-04-04T00:17:23.473 回答
2

命令行参数可以通过方法String[] args的参数访问main

对于第一个参数,您可以检查args[0]

整个代码看起来像

public static void main(String[] args) {
    if ("a".equals(args[0])) {
         // do something
    }
}
于 2009-04-04T00:17:26.033 回答
1

你的main方法有一个String[]论点。其中包含已传递给您的应用程序的参数(通常称为args,但这不是必需的)。

于 2009-04-04T00:16:34.973 回答
1

尝试传递值 a 并使用 equals 方法进行比较,如下所示:

public static void main(String str[]) {

    boolean b = str[0].equals("a");

    System.out.println(b);

}

按照此链接了解有关Java 中命令行参数的更多信息

于 2013-10-22T06:12:39.973 回答
0

正如其他人所说... .equals 方法是您所需要的。

万一你使用了类似的东西:

if(argv[0] == "a")

然后它不起作用,因为 == 比较两个对象的位置(物理相等)而不是内容(逻辑相等)。

由于命令行中的“a”和程序源代码中的“a”被分配在两个不同的位置,因此不能使用 ==。您必须使用 equals 方法来检查两个字符串是否具有相同的字符。

另一个注意事项... "a" == "a" 在很多情况下都可以使用,因为字符串在 Java 中是特殊的,但 99.99999999999999% 的时间你想使用 .equals。

于 2009-04-04T00:56:06.347 回答
0

命令行参数作为字符串存储在String数组String[] args that is passed tomain()` 中。

java [program name] [arg1,arg2 ,..]

命令行参数是在运行程序时从命令提示符接受的输入。传递的参数可以是任何东西。它存储在args[]数组中。

//Display all command line information
         class ArgDemo{
            public static void main(String args[]){
            System.out.println("there are "+args.length+"command-line arguments.");
            for(int i=0;i<args.length;i++)
            System.out.println("args["+i+"]:"+args[i]);
    }
    }

例子:

java Argdemo one two

输出将是:

there are 2 command line arguments:
they are:
arg[0]:one
arg[1]:two
于 2016-12-18T17:44:42.030 回答