需要帮助比较命令行参数与 Java 中的字符串文字

Ada*_*rke 1 java comparison command-line-arguments

我已经尝试寻找这个问题的答案,但我不完全确定要搜索什么。基本上我想要的是让我的程序的用户能够输入(进入命令行):

java galaxySim HELP
Run Code Online (Sandbox Code Playgroud)

并让我的程序告诉他们一些有关文件格式和内容的信息。否则第一个参数是文件名。所以我必须这样做的代码是:

if (args[0] == "HELP") {
  System.out.printf("Help Stuff...");
}else{
  filename = args[0];
  System.out.printf("Filename found");
}
Run Code Online (Sandbox Code Playgroud)

它被封装在错误处理的东西中,我认为它不会影响到这一点,所以还没有写。问题是:无论我输入什么作为第一个参数,它总是转到 else 语句。

我已经尝试在参数前后添加空格,但它从来没有帮助。我不相信这是我的 IF 语句的问题,就像我写的一样

if(args[0] == args[0]){
Run Code Online (Sandbox Code Playgroud)

然后它确实转到正确的语句。好像

args[0] == "Help"
Run Code Online (Sandbox Code Playgroud)

总是假的。也许有某种编码问题?我正在使用 win7,如果这有区别的话。

这不是程序的重要组成部分,但是......如果它有效就好了。有谁知道这里出了什么问题?

谢谢!

Kaz*_*ara 5

比较String使用equals

改变这个:

if(args[0] == "HELP")

if(args[0].equals("HELP"))

==比较引用相等,而不是值相等。您需要检查值,因此使用equals().

这是进一步知识的链接

您可能还想阅读本文以了解==equals()方法之间的区别。