首页 > 解决方案 > Java JFrame中用于电子邮件验证的while循环

问题描述

我正在尝试在 JFrame 中使用 while 循环进行电子邮件验证(电子邮件中必须包含“@”和“com”)。到目前为止,我有:

while(!emailInput.getText().matches(".*[@com].*")) {
if (emailInput.getText().matches(".*[@com].*")) {
break;
} //from if
}
if((!emailInput.getText().matches(".*[@com].*"))) {
JOptionPane.showMessageDialog(null, "Your email does not seem to be valid. It should be in the form of myemail@myemail.com. Please try again!");
}

当然,while 运行将是无限的——一旦我通过输入随机电子邮件(例如,“test”)测试程序,条件将始终为 false。我不敢在 while 循环中显示对话框(说电子邮件似乎不正确),因为它也会无限次显示消息。

但这有点违反直觉——因为我希望用户继续输入电子邮件,直到他正确为止(中断 while 循环)。

我试图只使用if语句,但似乎我的if代码只能工作一次 - 所以我指望 while 循环。但是,有没有办法解决这个问题,即使不使用 while 循环?我正在使用它进行密码验证,我也遇到了麻烦。我愿意接受任何建议。

标签: javaswingjframeemail-validation

解决方案


正如塞巴斯蒂安建议的那样,解决方案是使用一个按钮,摆脱while循环,只使用一个if语句。原因是如果用户点击它,程序会检查验证——并且每当用户点击按钮时它都会检查验证。当用户输入有效的电子邮件并最后一次单击按钮时,该过程结束。


推荐阅读