java - 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 循环?我正在使用它进行密码验证,我也遇到了麻烦。我愿意接受任何建议。
解决方案
正如塞巴斯蒂安建议的那样,解决方案是使用一个按钮,摆脱while
循环,只使用一个if
语句。原因是如果用户点击它,程序会检查验证——并且每当用户点击按钮时它都会检查验证。当用户输入有效的电子邮件并最后一次单击按钮时,该过程结束。
推荐阅读
- javascript - 如何使用 Ajax 使用函数的时间问题来淡入/淡出
- java - com.example.demo1.service.PersonService 中构造函数的参数 0 需要 'com.example.demo1.dao.PersonDao' 类型的 bean
- python - Python3 尝试使用正则表达式将模式与变量中的值匹配
- amazon-web-services - CloudFormation、S3 存储桶访问跨账户 IAM 角色
- racket - 如何在 Scribble 中链接到第三方 Racket 文档?
- json - 在 Laravel 项目的新 Telescope 安装中,Localhost:8000/telescope 返回空白页
- python - Beautifulsoup requests.post 没有正确抓取
- javascript - Javascript:将项目推入列表并延迟打印
- java - compareTo() 方法抛出“此方法必须返回 int”错误,尽管在方法中返回 int
- bash - 从文件中读取两列并在第三列中写入一个值