Java JFrame中电子邮件验证的While循环

Java JFrame中电子邮件验证的While循环,java,jframe,email-validation,Java,Jframe,Email Validation,我尝试在JFrame中使用while循环进行电子邮件验证电子邮件中必须包含@和com。到目前为止,我已经: while(!emailInput.getText().matches(".*[@com].*")) { if (emailInput.getText().matches(".*[@com].*")) { break; } //from if } if((!emailInput.getText().matches(".*[@com].*"))) { JOptionPane.showMess

我尝试在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循环中显示邮件似乎不对的对话框,因为它也会无限次地显示邮件

但这有点违反直觉——因为我希望用户继续输入电子邮件,直到收到正确的电子邮件为止,在循环中打断


我曾尝试使用onlyif语句,但我的if代码似乎只工作一次——所以我依赖while循环。然而,即使不使用while循环,有没有办法解决这个问题?我正在使用它进行密码验证,我也遇到了问题。我愿意接受任何建议。

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

为什么不按下按钮验证电子邮件?为什么需要while循环?我的代码实际上在我的REGISTER按钮的ActionListener中:等等,我想我明白你的意思了。我可以去掉while循环,因为如果用户单击它,它会检查验证,因此if语句就足够了。他会一直输入电子邮件并点击注册按钮,直到收到为止,对吗?好吧。你为什么还需要while循环呢?是的,这是我的问题。这与你关于while循环的问题无关,但请记住你的regex.[@com].*并不像你想象的那样工作。它将允许许多无效的电子邮件地址格式。您应该使用测试仪—例如。此外,请记住,关于验证电子邮件地址的正确方法有很多讨论,例如,请参阅。非常感谢!我做了一些研究并修复了它!