将JTextField值与多个数组进行比较

时间:2015-12-26 17:45:09

标签: java arrays jtextfield

我最近开始学习Java,所以我决定进行简单的注册/登录。

private JTextField username;
private JPasswordField password;
private JButton check;
private JButton addToDb;
ArrayList<String> dbUser = new ArrayList<String>();
ArrayList<String> dbPassword = new ArrayList<String>();

public trial(){
    super("Title");
    setLayout(new FlowLayout());

    username = new JTextField("",10);
    password = new JPasswordField("",10);
    check = new JButton("Login");
    addToDb = new JButton("Sign Up");
    add(username);
    add(password);
    add(check);
    add(addToDb);

    addToDb.addActionListener(
            new ActionListener(){
                public void actionPerformed(ActionEvent event){
                    if(!username.getText().isEmpty()
                        && !password.getText().isEmpty()){

                        dbUser.add(username.getText());
                        dbPassword.add(password.getText());
                        username.setText("");
                        password.setText("");
                        System.out.println(dbUser + "/" + dbPassword);

                    }else{

                        System.out.println("Please fill the fields and try again!");
                    }
                }
            }               
    );

    check.addActionListener(
            new ActionListener(){
                public void actionPerformed(ActionEvent event){

                    for(int i=0; i<dbUser.size();i++){

                        if(username.getText() == dbUser.get(i) && password.getText()== dbPassword.get(i)){
                            JOptionPane.showMessageDialog(null, "Access Granted!");
                        }else{
                            JOptionPane.showMessageDialog(null, "Access Denied!");
                        }                       
                    break;                          
                    }
                }
            }
    );                      
  }
}

正如你所看到的,我已经创建了两个文本字段(用户名和密码),两个按钮,一个用于将值存储在两个不同的arraylists中(我尝试使用HashMap但是也没有用)。并且将数组中的值与文本字段中的值进行比较。问题是,当我使用登录按钮时,它总是说拒绝访问。任何想法如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

如果你想比较Strings使用equals方法,==将比较地址

所以改变

if(username.getText() == dbUser.get(i) && password.getText()== dbPassword.get(i))

if(username.getText().equals(dbUser.get(i)) && password.getText().equals(dbPassword.get(i)))

答案 1 :(得分:0)

在java String中,将equals==进行比较。原因是,字符串是对象而不是基元。有关==equals()

的详情,请参阅What is the difference between == vs equals() in Java?

所以if表达式错误:

username.getText().equals(dbUser.get(i)) && password.getText().equals( dbPassword.get(i))