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();