简单的string.equals工作不正确 - Java

时间:2011-11-23 14:05:32

标签: java string properties string-comparison

现在已经用这种方法绞尽脑汁了,这只是让我难过。

我有一个简单的字符串比较:

public static void login() 
{
    isIncorrectInput = true;

    while (isIncorrectInput) 
    {
        System.out.print("Please enter your password: ");
        password = readLine();

        if (password.equals(currentUser.password))
        {
            isIncorrectInput = false;
            System.out.print("Successful login!");
        } 
        else 
        {
            System.out.print("Incorrect password. Please try again.\n");
        }
    }
}

因此,'password'是一个String变量,currentUser是具有password属性的User对象的实例。

我已经尝试切换调用该方法的对象:不起作用。试图忽略这个案子:不起作用。密码肯定是一样的,我已经无数次地介入了它,当它应该返回true时它只是返回false。

我做错了什么!!?

先谢谢你们。

4 个答案:

答案 0 :(得分:5)

没有看到readLine()的主体,我无法确定,但它可能是一个空白问题。在进行比较之前,请尝试对输入执行trim()

答案 1 :(得分:2)

也许你需要压制终点字符。

password.replace(System.getProperty("line.separator"),"");

答案 2 :(得分:2)

密码变量可能以'\ n'char结尾 - 尝试:

password = password.trim();

答案 3 :(得分:2)

你在哪里初始化“密码”?密码是否在User-Class集中变量,并且您可以直接访问(公共等)。

“readLine()”方法有什么作用? 也许您错过了空格字符或换行符,还要检查大写/小写是否相同。 祝你好运。