我想找出为什么这段代码中的第二个if语句总是返回false,所以每次我点击程序中的“go”按钮都会显示错误的密码。有人有什么想法吗?
package Main;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
public class CodexConsoleEngine extends CodexConsoleWindow implements ActionListener {
public void actionPerformed(ActionEvent e) {
boolean isPasswordEntered = false;
JButton clickedButton = (JButton) e.getSource();
String commandSent;
String passwordSet = "password";
char[] charPasswordEntered = password.getPassword();
String passwordEntered = charPasswordEntered.toString();
if(!isPasswordEntered){
if(passwordEntered.equals(passwordSet)){
consoleOutput.append("Correct password\n");
}else{
consoleOutput.append("Incorrect password\n");
}
}else{
consoleOutput.append("You have already entered your password");
}
}
}
对于任何明显的错误,我很抱歉,我最近才开始使用java。真的很近。
编辑:我编辑了代码以使用.equals()方法,但它仍然无法正常工作。它可能与toString()方法或我正在使用JPasswordField的事实有关吗?
答案 0 :(得分:1)
试试这个:
if(!isPasswordEntered){
if(passwordEntered.equals(passwordSet)) {
答案 1 :(得分:0)
比较字符串使用String.equals()
方法
例如,在您的代码中,它应该是if(passwordEntered.equals(passwordSet))
或者您可以使用String.equalsIgnoreCase()
忽略大写
答案 2 :(得分:0)
您使用字符串passwordEntered
和passwordSet
错误地测试了相等性。
要在字符串中正确测试相等性,请使用String.equals或String.equalsIgnoreCase进行不区分大小写的相等性测试。