我目前正在尝试验证员工登录表单。但是我在验证输出中意识到,每当我向用户名文本字段输入值时,它仍然会弹出消息“请输入您的用户名”,然后弹出“无效凭据”消息框。这是我的代码如下:
String username = usernameTxt.getText();
String password = passwordTxt.getText();
if (username.contains(""))
{
JOptionPane.showMessageDialog(null,"Please Enter Your Username Credentials.");
}
else if (password.contains (""))
{
JOptionPane.showMessageDialog(null,"Please Enter Your Password Credentials.");
}
else if (password.contains ("") && (username.contains("")))
{
JOptionPane.showMessageDialog(null,"Please Enter Your Login Credentials.");
}
if ((username.contains("staff") && password.contains ("pass")))
{
JOptionPane.showMessageDialog(null,"Login Successfull","Success",JOptionPane.INFORMATION_MESSAGE);
passwordTxt.setText(null);
usernameTxt.setText(null);
staffdashboard sd = new staffdashboard();
sd.setVisible(true);
this.setVisible(false);
}
else
{
JOptionPane.showMessageDialog(null,"Invalid Login Details","Login Error",JOptionPane.ERROR_MESSAGE);
passwordTxt.setText(null);
usernameTxt.setText(null);
}
enter user message box invalid login details message box
我遗漏了什么?如何停止立即输出2个消息框的表单?
答案 0 :(得分:2)
问题出在第一个if语句中:username.contains("")
每个字符串包含空字符串。
您应该将其替换为if("".equals(username))
或使用StringUtils.isBlank(username);
所有contains("")
答案 1 :(得分:0)
@Naya的答案是正确的,但是您可能想要删除任何空格,前提是不允许将它们用作有效输入,所以:
if (username.trim().equals("")) ...
else if (password.trim.equals("")) ...
...