现在已经用这种方法绞尽脑汁了,这只是让我难过。
我有一个简单的字符串比较:
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。
我做错了什么!!?
先谢谢你们。
答案 0 :(得分:5)
没有看到readLine()的主体,我无法确定,但它可能是一个空白问题。在进行比较之前,请尝试对输入执行trim()
。
答案 1 :(得分:2)
也许你需要压制终点字符。
password.replace(System.getProperty("line.separator"),"");
答案 2 :(得分:2)
密码变量可能以'\ n'char结尾 - 尝试:
password = password.trim();
答案 3 :(得分:2)
你在哪里初始化“密码”?密码是否在User-Class集中变量,并且您可以直接访问(公共等)。
“readLine()”方法有什么作用? 也许您错过了空格字符或换行符,还要检查大写/小写是否相同。 祝你好运。