Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
simple string.equals工作不正确-Java_Java_String_Properties_String Comparison - Fatal编程技术网

simple string.equals工作不正确-Java

simple string.equals工作不正确-Java,java,string,properties,string-comparison,Java,String,Properties,String Comparison,很久以来,我一直在绞尽脑汁想这件事,这让我很难堪 我有一个简单的字符串比较: public static void login() { isIncorrectInput = true; while (isIncorrectInput) { System.out.print("Please enter your password: "); password = readLine(); if (password.equa

很久以来,我一直在绞尽脑汁想这件事,这让我很难堪

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

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”是一个字符串变量,currentUser是具有password属性的用户对象的实例

我尝试切换调用该方法的对象:不工作。试图忽略这个案例:不起作用。密码绝对是一样的,我已经用过无数次了,它只是返回false,而应该返回true

我做错了什么


提前感谢各位。

也许您需要抑制结束行字符

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

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

密码变量可能以“\n”字符结尾- 尝试:

你在哪里初始化“密码”?是用户类集合中的密码变量,您可以直接访问(公共等)

“readLine()”方法做什么? 可能您遗漏了空格字符或换行符,也请检查大小写是否相同。
祝你好运。

你确定
readLine
不包括换行符吗?请包括
System.out.println(密码)
和一个
System.out.println(currentUser.password)
if
语句之前,并向我们显示结果。ll,
String.equals()
肯定有效,所以我非常确信这些值是不同的。如果你能提供一个简短但完整的程序来演示这个问题,那真的会很有帮助…用户对象中的password属性是字符串吗?您可以发布您的用户类代码吗?您的readline方法是否可以返回一个结尾带有换行符的字符串?我已经尝试过在密码输入中使用trim(),但我没有想到在password属性中使用它。。。在那之后就行了。不知道空白是从哪里来的@NewStart不是空格而是结束行字符。。。trim()还可以删除结束行字符。啊,我明白了。。我没有意识到这一点,我以为它只删除了任何形式的空白@新开始:根据文档,每个字符都是一个空格(\u0020)或更少(ch
password = password.trim();