为什么我在java中的if语句总是返回false?

时间:2013-11-20 00:07:50

标签: java if-statement

我想找出为什么这段代码中的第二个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的事实有关吗?

3 个答案:

答案 0 :(得分:1)

试试这个:

if(!isPasswordEntered){
        if(passwordEntered.equals(passwordSet)) {

答案 1 :(得分:0)

比较字符串使用String.equals()方法 例如,在您的代码中,它应该是if(passwordEntered.equals(passwordSet)) 或者您可以使用String.equalsIgnoreCase()忽略大写

答案 2 :(得分:0)

您使用字符串passwordEnteredpasswordSet错误地测试了相等性。

要在字符串中正确测试相等性,请使用String.equalsString.equalsIgnoreCase进行不区分大小写的相等性测试。