我有一個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