【发布时间】:2020-02-16 15:21:13
【问题描述】:
我已经为某些命令创建了最终字符串,但是当我尝试检查用户给出的命令是否匹配时,它不起作用。
这些是我的最终字符串的示例:
public static final String END = "quit";
public static final String SHOW = "print";
但是如果我要使用它,例如像这样:
String command = scanner.nextLine();
if (command == SHOW) {
System.out.println("Print this line.");
}
即使它们匹配,它也会看到它们不匹配。我尝试打印最终变量:
System.out.println(END);
它会打印它的值,但由于某种原因,当我将它们与用户提供的相同字符串进行比较时,它无法识别它们。
我试图搜索类似的示例并阅读有关最终变量的信息,但我认为我遗漏了一些重要的东西。我知道问题出在最终变量上,而不是其他地方,因为如果我将这些相同的字符串与相等的字符串进行比较,程序就可以工作。例如:
String command = scanner.nextLine();
if (command.equals("print") {
System.out.println("Print this line.");
}
我假设我做错了一些非常简单的事情,但我无法在任何我能理解的地方找到任何答案。我仍然是初学者,所有其他关于类似问题的示例都包含一些我不理解的功能,因此它们无法帮助我了解我做错了什么。
【问题讨论】:
-
这能回答你的问题吗? How do I compare strings in Java?
-
那是因为如果你用 == 比较两个字符串并且它们相等,这将返回 0。所以它永远不会进入 System.... 因为你不要求它。使用 string1.equals(string2) 进行真正的字符串比较,并将布尔值作为返回值。
-
也许你把 final 和 string internment 混淆了?
-
我是这么想的,但是我的老师让我将它们声明为final,这样“public static final String SHOW = "print"; if (command == SHOW { 应该发生一些事情。他是那个告诉我使用 == 所以这就是我尝试使用它的原因。问题不是我不知道如何比较字符串,问题是我不知道如何比较 final使用变量的字符串。
-
调试您的应用程序。平等应该工作。确保
command确实是您认为的那样。