-3

(对不起,奇怪的标题,但我无法弄清楚究竟是什么问题)

下面的代码应该首先从命令行获取一个字符串(有效),然后输入被拆分(也可以完美地工作;我通过在 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."); }

我尝试输入“tweet asdf”,但它返回

> tweet asdf
Command tweet not found.

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

4

2 回答 2

1

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

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

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

于 2013-07-09T15:56:58.537 回答
1

==用于比较两个对象。这比较了他们的参考。改为if(command.equals("tweet"))按值进行比较。

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

于 2013-07-09T15:57:19.173 回答