Java的Scanner字符串输入,if语句不起作用

4
我对Java非常陌生,这似乎很简单,也许我漏掉了什么。以下是我的一点代码片段,它应该要求用户输入密码并将其存储在userinput中。不幸的是,如果我键入“admin”,即使我大小写混合或全大写/全小写,也会无法工作。我甚至尝试预设变量,例如String password = “admin”; 并将其设置为if (userinput == password),但好像也不起作用。请帮忙!
    }
    public void protect(){
        Scanner input = new Scanner(System.in);
        System.out.println("Enter password: ");
        String userinput = input.nextLine();
        if (userinput == "admin"){
            System.out.println("Correct!");
        } else if (userinput != "admin"){
            System.out.println("Wrong!");
        }
    }
}

无论我输入什么密码,甚至是"admin",都会直接提示错误。
1个回答

22

你不能像那样比较字符串。使用.equals()代替:

if(userinput.equals("admin")) { // etc

你为什么会这样问呢?

  • == 检查实际对象引用是否相同。
  • equals(...) 检查两个字符串是否持有相同的字符串(即以相同顺序包含相同字符)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接