为什么即使我完全正确地输入它们,这些字符串也会被评估为false?

时间:2015-03-28 23:51:43

标签: java eclipse string

我正在编写一个简单的程序来掌握使用Java中的Scanner。该程序具有user_1的存储值并要求用户提供 String变量用户名然后使用==运算符对user_1进行检查,但即使用户名与user_1匹配,它仍然会计算为false。我确定我必须遗漏一些简单的东西,任何帮助都会受到赞赏。我甚至添加了行打印两个变量只是为了仔细检查它们是相同的!!

import java.util.Scanner;

public class HelloWorld {

public static void main(String[] args) {

    String user_1 = ("lucasRHCP");

    Scanner input = new Scanner(System.in);
    System.out.println("Enter your username: ");
    String username = input.nextLine();

    System.out.println(user_1 + " " + username);

    if (username == user_1){
        System.out.println("True");
    }
    else {
        System.out.println("False");
    }
}   
}

3 个答案:

答案 0 :(得分:2)

永远不要将对象(和String是一个对象)与==进行比较,使用equals()方法

答案 1 :(得分:2)

使用==比较两个对象是否相同,而不是它们的值是否相同。您想要比较它们的值,因此您需要使用.equals()

if (username.equals(user_1)) {
  System.out.print("True");
} else {
  System.out.print("False");
}

比较两辆红色相同的汽车,它们是完全相同但却不一样。在java中,两个变量既可以是相同的,也可以是两个不同的相似的东西。

答案 2 :(得分:0)

您无法使用==

比较java中的字符串

您应该使用String类方法

username.equals(user_1);