【发布时间】:2015-03-21 14:48:51
【问题描述】:
我正在做一个项目,并一直在尝试隐含用户名/密码。下面你会看到代码。每当我单击登录按钮时,用户名都会更改为 bobsyouruncle,这表明它在方法中找到了“真”值。问题是它总是如此,无论输入如何。这更加令人困惑,因为如果我将下面的“return true”更改为“return false”,那么我仍然会得到 bobsyouruncle。有什么建议吗?
loginButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
Boolean authenticated = AuthenticateCredentials(usernameField.getText(),passwordField.getPassword());
if(authenticated = true){
usernameField.setText("Bobsyouruncle");
} else {
System.exit(0);
}
}
});
下面是访问的方法。
private Boolean AuthenticateCredentials(String user, char[] pass) {
//This is only a placeholder.
String theCorrectAnswer = "42";
String theCorrectUser = "FPrefect";
char[] passcode = theCorrectAnswer.toCharArray();
optionPanel.showInternalMessageDialog(securityPanel,"Eggs are not supposed to be green.");
if (user.equals(theCorrectUser) && Arrays.equals(passcode,pass)) {
return true;
} else {
return false;
}
}
如果有人想告诉我,我已经搞砸了创建一个安全的用户名和密码来省去我以后的麻烦,那也是花花公子。
【问题讨论】:
-
仔细查看
if(authenticated = true){。=在 Java 中做了什么? -
如果忘记双等号
==对您来说是一个常见问题,您可以尝试将您的条件写成(immutable-value == mutable-value)即(true == authenticated)如果您不小心输入了(true = authenticated),您会得到一个编译错误,而不必弄清楚它为什么不工作 -
@chancea 是的,但在布尔值的情况下,简单的
if (boolValue)比if(boolValue==true)更简单、更安全。同样对于if (boolValue==false)或if(booValue!=true),我们可以简单地将其写为if (!boolValue)。 -
你应该用更简单的替换你的
if(condition) return true; else return false;:return (condition);
标签: java arrays passwords char