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

Posted

技术标签:

【中文标题】如何正确地为密码做一个while循环【英文标题】:How to correctly do a while loop for passwords 【发布时间】:2019-11-29 23:51:12 【问题描述】:

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

我尝试过 for 循环、执行 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 存储到数组中的方法。

【问题讨论】:

【参考方案1】:

用 if 语句替换你的 do-while 循环

//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() 方法而不是使用==

【讨论】:

以上是关于如何正确地为密码做一个while循环的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript循环和数组常用操作

如何在while中正确循环?

如何使用while循环正确修改整数

如何在while内部正确循环

Python:发生外部异常时如何正确继续while循环

不会做 还不来看?! for/while常用循环例题 shell脚本