如何正确地为密码做一个 while 循环

How to correctly do a while loop for passwords

我正在尝试创建一个收集用户名和密码的注册 Jframe window 我正在尝试创建一个条件,如果密码不等于确认密码字段让用户输入一个新的通过匹配的代码。我不断收到 Jpane 错误消息的垃圾邮件,并且在我输入错误的密码后它不会消失。

我已经尝试过 for 循环、Do while 循环和常规 while 循环。我尝试了一些东西

这只是创建 JLabel

  JLabel Register = new JLabel("Register");

下一部分是使 Jlabel 与用户交互

  Register.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
  Register.addMouseListener(new MouseAdapter() {

  @Override
  public void mouseClicked(MouseEvent e) {

点击“注册”后会发生一些事情。

我创建了 4 个变量来跟踪用户输入。

   String password = passwordField.getText();
   String confirmpass = passwordField_1.getText();
   String name =  userName.getText();       
   String email = createEmail.getText();

这是我开始 do while 循环以确认密码是否匹配的地方,我会让它重复

  do {  
      JOptionPane.showMessageDialog(null, "Passwords do not match", "Login Error", JOptionPane.ERROR_MESSAGE);
        password = "";
        confirmpass = "";

  }while(password == confirmpass);
  dispose();

  //System.out.println("Testing the Register Button lol or label " + name);

}

我希望能够有一个条件,在退出屏幕之前确保密码匹配。另外,如果可能的话,可以告诉我一种将来自 JFrame 的用户输入存储到数组中的方法。

将您的 do-while 循环替换为 if 语句

//inside onclick function
if(!confirm_pass.equals(password)){
    JOptionPane.showMessageDialog(null, "Passwords do not match", "Login Error", 
    JOptionPane.ERROR_MESSAGE);
    return; //the return keyword will stop the method to go further.
}


dispose();

如果密码不相同,do-while 循环将毫无意义, 因为它们只会无休止地循环。此外,在比较字符串时,您应该使用 equals() 方法,而不是使用 ==.