Java命令行参数
我试图检测是否input“a”作为第一个string参数。
public class YourClass { public static void main(String[] args) { if (args.length > 0 && args[0].equals("a")){ //... } } }
如果您打算扩展过去的单一参数,请使用apache commons cli 。
“Apache Commons CLI库提供了一个用于parsing传递给程序的命令行选项的API,还可以打印帮助消息,详细说明命令行工具的可用选项。
Commons CLI支持不同types的选项:
- 像选项(即。tar -zxvf foo.tar.gz)
- GNU像长期选项(即du – 人可读 – 最大深度= 1)
- Java的属性(即.java -Djava.awt.headless = true -Djava.net.useSystemProxies = true Foo)
- 带附加值的简短选项(即gcc -O2 foo.c)
- 长连字符(即ant -projecthelp)
每个Java程序都以
public static void main(String[] args) {
main()
作为参数使用的String
types数组将参数保存到程序的命令行参数中。 如果用户运行你的程序
$ java myProgram a
那么args[0]
将保存string“a”。
命令行参数在第一个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!? } }
命令行参数可以通过main
方法的String[] args
参数访问。
对于第一个参数,你可以检查args[0]
整个代码看起来像
public static void main(String[] args) { if ("a".equals(args[0])) { // do something } }
你的main
方法有一个String[]
参数。 包含已传递给应用程序的参数(通常称为args
,但这不是必需的)。
尝试传递值a,并使用像这样的equals方法进行比较:
public static void main(String str[]) { boolean b = str[0].equals("a"); System.out.println(b); }
按照此链接了解更多关于Java中的命令行参数
正如其他人所说… .equals方法是你所需要的。
在不经意的情况下,你使用了类似于:
if(argv[0] == "a")
那么它不起作用,因为==比较两个对象的位置(物理相等)而不是内容(逻辑相等)。
由于命令行中的“a”和程序源代码中的“a”分配在两个不同的地方,因此不能使用==。 你必须使用equals方法来检查两个string是否具有相同的字符。
另一个说明…“a”==“a”将在很多情况下工作,因为string在Java中是特殊的,但99.99999999999999%的时间要使用.equals。
命令行参数作为string存储在传递给main()
的String
数组( String[] args
main()
。 命令行参数是在执行时直接在命令行上跟随程序名称的信息。
命令行参数是运行程序时从命令提示符处接受的input。 通过的参数可以是任何东西。 它存储在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]); } }
如果ARgDemo
是这样执行的话:
java Argdemo one two
输出将是:
there are 2 command line arguments: they are: arg[0]:one arg[1]:two
这里有两个命令行参数