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()作为参数使用的Stringtypes数组将参数保存到程序的命令行参数中。 如果用户运行你的程序

 $ 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 

这里有两个命令行参数