2013-06-19 52 views
0

我创建了一个JAR文件,它接受3个参数并返回一个字符串,但即使它们正确,我的代码似乎也无法识别参数值。Java JAR不识别cmd行参数

我指定的参数:

if (args.length > 1) 
{ 
    raftcode = args[0]; 
    Selection =args[1]; 
    Option = args[2]; 
    System.out.println("Getting arguments"); 

} 

我已经检查了价值,他们是正确的,但程序不会进入if语句

if (Selection == "Sightings") 
{ 
      //Get sightings text 
} 

else if (Selection == "Captures") 
{ 
      //Get captures text 
} 

else if (Selection == "Myrafts") 
{ 
      //Get my rafts text 

} 
else if (Selection == "Other") 
{ 
      // Get other text 

} 

如果我没有ARGS运行代码它返回的字符串使用默认的测试变量,我可以输出参数值。

:)

+8

比较两个字符串值与字符串的'equals'方法,不能以''==。 – rgettman

+0

对于基元以外的任何东西,使用'=='都是不好的(对于'float'和'double'也是不好的,但是出于不同的原因)。你认为'(“String”==“String”)'解决了什么?如果你不确定,试试吧! 编辑:糟糕的例子,见下文。 – Shrike

+2

@Shrike这不是一个好的例子,因为它可以工作(解析为'true'),因为编译时字符串常量是[intern'd](http://docs.oracle.com/javase/7/docs/api/的java /郎/ String.html#实习生%28%29)。 – Boann

回答

3

您应该使用.equals,而不是==如下

if ("Sightings".equals(Selection)) 
{ 
     //Get sightings text 
} 
+4

或者更安全:'if(“Sightings”.equals(Selection))',以避免潜在的空指针异常。 – lreeder

+0

谢谢你现在完美!甚至没有认为这是==问题不会再使用它:) – Gemma

2

正如其他人说你应该与.equals没有==比较字符串的什么是错的任何意见将是巨大的。如果您在任何地方都使用String.intern,则可以将字符串与==进行比较,但这样做仍然存在风险,因为如果您忘记了单个实例,它将会失败。

如果您使用的命令行参数广泛看看作为Commons CLI