我有一个for
循环,用于比较用户登录详细信息以启动应用程序的下一个屏幕。如何在for循环中只执行一次else块
如果用户输入的字段与从数据库返回的ArrayList
中的数据成功匹配,程序将启动下一个屏幕 - 如果它们不匹配,则使用JOptionPane
将错误消息输出给用户。
我的问题是错误消息是为for
循环的每次迭代输出的,但我希望消息只显示一次。
//if name or password are NOT left blank proceed with the check otherwise output error message in the text area
if (!name.equals("") && !password.equals("")) {
for (int i = 0; i < passwords.size(); i++) {
if (name.equals(userNames.get(i)) && (password.equals(passwords.get(i)))) {
myHomeGUI.setVisible(true);
break;
} else {
JOptionPane.showMessageDialog(null,"Sorry, no user recognized with those credentials\nPlease try again");
}
}//end for loop
} else {
JOptionPane.showMessageDialog(null,"Sorry, no fields can be left blank");
}//end
因此,在消息后添加一个break语句; – OldProgrammer 2015-02-24 12:32:13
试过,如果我有一个休息声明后消息在其它它不会工作。例如,如果我的arraylist for userNames的第三个位置是david,并且用户输入了不在数组列表中的john,它将跳出循环,并且永远不会达到大卫,因此永远不会评估为True – RoRo88 2015-02-24 12:34:43
我会认为关于更改userNames /密码的事情。为什么你有两个列表? (例如)带有用户名/密码的(Hash)Map会更好吗?那么你不需要经过一个循环。只是比较密码与map.get(用户名) –
griFlo
2015-02-24 12:35:45