如何正确地为密码做一个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循环的主要内容,如果未能解决你的问题,请参考以下文章