为什么比较这些字符串不起作用?(JAVA初学者)

为什么比较这些字符串不起作用?(JAVA初学者),java,string,Java,String,我正在尝试读取控制台输入,它们正在工作。但是,我的if语句(检查我的输入和我想要的输入是否相同)不起作用。我已经在底部添加了我所有的代码,如果你看到我做错了什么,请告诉我。我是java新手,所以也给我一些关于代码其他部分的提示。谢谢,麦克斯 package Issue; import java.util.Scanner; import java.util.concurrent.TimeUnit; public class Issue { public static int loop;

我正在尝试读取控制台输入,它们正在工作。但是,我的if语句(检查我的输入和我想要的输入是否相同)不起作用。我已经在底部添加了我所有的代码,如果你看到我做错了什么,请告诉我。我是java新手,所以也给我一些关于代码其他部分的提示。谢谢,麦克斯

package Issue;

import java.util.Scanner;
import java.util.concurrent.TimeUnit;

public class Issue {
    public static int loop;
    public static String input,desiredInput;

    public static void main(String args []) throws InterruptedException {
        
    Scanner in = new Scanner(System.in);
    
    loop = 1;
    
    while(loop == 1) {
        input = in.nextLine();
        desiredInput = "help";
        // uncomment to see if what input and desired input are equal to :)
        //System.out.println(input + " " + desiredInput);
    
            if(input == desiredInput) {
                System.out.println("911 what's the emergency.");
            }
    
        }
    
    
    
    
        
    }
    
    
}

这里比较的是对象引用。字符串是java input==desiredInput中的对象,表示检查的是对象引用的相等性,而不是内容的相等性。要比较内容,请使用input.equals(desiredInput)

此处比较的是对象引用。字符串是java input==desiredInput中的对象,表示检查的是对象引用的相等性,而不是内容的相等性。要比较内容,请使用input.equals(desiredInput)

这是Java的一点优势,您将学会避免。双等于“==”不应用于字符串对象或任何对象的值比较。对于字符串,请使用

input.equals(desiredInput)

这是Java的一个小优势,您将学习如何避免它。双等于“==”不应用于字符串对象或任何对象的值比较。对于字符串,请使用

input.equals(desiredInput)

=
测试引用相等性(它们是否为同一对象)


.equals()
测试值相等(它们在逻辑上是否“相等”)。

=
测试引用相等(它们是否是相同的对象)


.equals()
测试值相等性(它们在逻辑上是否“相等”)。

您好,FoxGoHehehe,欢迎使用StackOverflow和编程。您的代码不起作用,因为在java中比较
String
s的效果不同。通过比较
input==desiredInput
您实际比较的是
字符串是否是内存中的同一对象,而不是它们是否相等(相等)。您要比较:
desiredInput.equals(输入)
。此外,您可能希望从输入的两端删除空字符,如换行符和空格。这样做:
desiredInput.equals(input.trim())
。我们不使用==来比较java中字符串的值。尝试输入。等于(desiredInput)谢谢,我对此一无所知!我将能够继续我的项目!你好,Foxgohehe,欢迎来到StackOverflow和编程。您的代码不起作用,因为在java中比较
String
s的效果不同。通过比较
input==desiredInput
您实际比较的是
字符串是否是内存中的同一对象,而不是它们是否相等(相等)。您要比较:
desiredInput.equals(输入)
。此外,您可能希望从输入的两端删除空字符,如换行符和空格。这样做:
desiredInput.equals(input.trim())
。我们不使用==来比较java中字符串的值。尝试输入。等于(desiredInput)谢谢,我对此一无所知!我将能够继续我的项目!