2013-07-09 83 views
-3

(对不起,我奇怪的冠军,但我不能找出真正的问题是什么)获取字符串→分割→字符串的if/else if语句返回else语句没有理由

下面的代码应该首先从命令行获得一个字符串(工作方式),然后输入被分割(完美地工作;我通过在if/else之前打印两个字符串来检查,如你在我注释到的部分中看到的那样)和那么它应该检查分割字符串的第一部分是什么。例如,如果它等于“tweet”,它应该使用Tweet方法进行处理。

但不知何故,它没有得到正确的。它总是执行else语句...

Scanner sc = new Scanner(System.in); 
System.out.print("> "); 
String input = sc.nextLine(); 

String[] splitString = input.split(" "); 
if(splitString.length != 2){ throw new IllegalArgumentException(); } 
String command = splitString[0]; 
String value = splitString[1]; 

/*System.out.print(command); 
System.out.print(value);*/ 
if(command == "tweet") { Tweet(value); } 
else if(command == "help") { ShowHelp(); } 
else { System.out.println("Command "+command+" not found."); } 

我试图进入 “鸣叫ASDF”,但它返回

> tweet asdf 
Command tweet not found. 

我做了什么错?我很困惑D:

回答

1

使用.equals方法而不是==。

==比较参考。 .equals将比较两个字符串的实际内容。

比较字符串时,您几乎总是希望使用.equals而不是==,因为通常您想比较内容而不是参考。

+0

它的工作原理!谢谢!! :D – bertcc423

+0

没问题。如果这有帮助,请接受答案。 –

1

您正在使用==来比较两个对象。这比较他们的参考。改用if(command.equals("tweet"))来按值进行比较。

由于字符串实习取决于JVM和实现(官方类路径,GNU类路径等),因此您的方法可能正常运行。