使用扫描仪时变量不会打印到控制台

Variable won't print out to console when using scanners

代码如下:

导入java.util.Scanner;

public class 你好{

public static void main(String[] args) {

    System.out.println("What is your name?");

    Scanner firstScanner = new Scanner(System.in);

    String imput = firstScanner.nextLine();

    if (imput.length() > 6 ) {

        System.out.println("That's quite a long name!");

    }

    else {

        System.out.println("A nice and consise name you have.");
    }

    imput = firstScanner.nextLine();

    if (imput == "Thank you") {

        System.out.println("Yes, so how many siblings do you have?");

    }

    else {

        System.out.print("Aren't you suppose to say 'Thank you' when someone complements you?");

    }


}

}

当我在控制台中键入 "Thank you" 时,它仍然显示 "Aren't you suppose to say 'Thank you' when someone complements you?",即使我完全按照我声明的方式键入它。为什么它不问我有几个兄弟姐妹?

抱歉,如果这很难理解。

使用字符串 equals() 方法检查 if 语句中的相等性。现在它返回 false 因为它只检查内存位置而不是字符串的值。也尝试使用 equalsignorecase 方法使其更健壮。

那是因为Java中的==运算符比较的是两个值是否相同。对于像 int 这样的原语,这很好用。但是对象,String是对象,比较的是两个对象是否相同,而不是内容是否相等。

可能存在两个不同的 String 对象,表示完全相同的文本,但却是两个不同的对象。

所以总是使用

string1.equals(string2)

string1.equalsIgnoreCase(string2)

用于字符串比较。