Java 从命令行获取字符串→ 分裂字符串→ if/else if语句无理由返回else语句

Java 从命令行获取字符串→ 分裂字符串→ if/else if语句无理由返回else语句,java,string,if-statement,Java,String,If Statement,很抱歉这个奇怪的标题,但我不知道到底是什么问题 下面的代码应该首先从命令行获取一个字符串,该字符串可以正常工作,然后拆分输入也可以正常工作;我通过在if/else之前打印两个字符串进行了检查,正如您在我再次注释掉的部分中所看到的,然后它应该检查被拆分字符串的第一部分是什么。例如,如果它等于tweet,则应使用tweet方法进行处理 但不知怎么的,它没有做到这一点。它总是执行else语句 Scanner sc = new Scanner(System.in); System.out.print("

很抱歉这个奇怪的标题,但我不知道到底是什么问题

下面的代码应该首先从命令行获取一个字符串,该字符串可以正常工作,然后拆分输入也可以正常工作;我通过在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:

使用.equals方法而不是==

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

比较字符串时,您几乎总是希望使用.equals not==来比较内容,而不是引用。

您使用==来比较两个对象。这比较了他们的参考文献。改为使用ifcommand.equalstweet按值进行比较


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

它可以正常工作!谢谢!!:没有问题。如果这有帮助,请接受答案。