2017-12-02 10 views
-1

どのようにループを止めることができますか?無効なユーザー名とパスワードについてのエラーmsgボックスは、自分のテキストファイルにあるユーザーの数に基づいてポップアウトしますが、解決方法はわかりませんでした。Javaでルーピングを停止する

for (int i = 0; i < userList.size(); i++) { 
      if (userList.get(i).getUserID().equals(txtUserID.getText()) && userList.get(i).getPassword().equals(ptxtPassword.getText())) { 
       if (userList.get(i).getUserType().equals("Administrator")) { 
        System.out.println("Welcome Admin " + userList.get(i).getName() + " (" + userList.get(i).getUserID() + ")"); 
        mainMenuForm.lblUser.setText("Welcome Admin " + userList.get(i).getName() + " (" + userList.get(i).getUserID() + ")"); 

        mainMenuForm.setVisible(true); 

        this.setVisible(false); 

       } else if (userList.get(i).getUserType().equals("Sales Manager")) { 
        System.out.println("Welcome SM" + userList.get(i).getName()); 
        mainMenuForm.lblUser.setText("Welcome SM " + userList.get(i).getName() + " (" + userList.get(i).getUserID() + ")"); 

        mainMenuForm.setVisible(true); 
        mainMenuForm.lblRegistration.hide(); 

        this.setVisible(false); 

       } else if (userList.get(i).getUserType().equals("Purchase Manager")) { 
        System.out.println("Welcome PM" + userList.get(i).getName()); 
        mainMenuForm.lblUser.setText("Welcome PM " + userList.get(i).getName() + " (" + userList.get(i).getUserID() + ")"); 

        mainMenuForm.setVisible(true); 
        mainMenuForm.lblDailySales.hide(); 

        this.setVisible(false); 
       } 
      } else { 
       JOptionPane.showMessageDialog(null, "Invalid User ID or Password!", "Login Error", JOptionPane.OK_OPTION); 
      } 
     } 

答えて

0

ためのループからそれを停止する

for (int i = 0; i < userList.size(); i++) {

を取り除きます。詳細についてはthis answerを確認してください。

forループ内にメッセージが表示されています。あなたはそれを移動し、boolean変数でユーザー/パスワードを見つけたかどうかを制御することができます。そのようなユーザー/パスワードの組み合わせがない場合、メッセージは1回だけ表示されます。

boolean found = false; 
for (int i = 0; i < userList.size() && !found; i++) { 
    if (userList.get(i).getUserID().equals(txtUserID.getText()) && userList.get(i).getPassword().equals(ptxtPassword.getText())) { 
     found = true; 
     if (userList.get(i).getUserType().equals("Administrator")) { 
      System.out.println("Welcome Admin " + userList.get(i).getName() + " (" + userList.get(i).getUserID() + ")"); 
      mainMenuForm.lblUser.setText("Welcome Admin " + userList.get(i).getName() + " (" + userList.get(i).getUserID() + ")"); 

      mainMenuForm.setVisible(true); 

      this.setVisible(false); 

     } else if (userList.get(i).getUserType().equals("Sales Manager")) { 
      System.out.println("Welcome SM" + userList.get(i).getName()); 
      mainMenuForm.lblUser.setText("Welcome SM " + userList.get(i).getName() + " (" + userList.get(i).getUserID() + ")"); 

      mainMenuForm.setVisible(true); 
      mainMenuForm.lblRegistration.hide(); 

      this.setVisible(false); 

     } else if (userList.get(i).getUserType().equals("Purchase Manager")) { 
      System.out.println("Welcome PM" + userList.get(i).getName()); 
      mainMenuForm.lblUser.setText("Welcome PM " + userList.get(i).getName() + " (" + userList.get(i).getUserID() + ")"); 

      mainMenuForm.setVisible(true); 
      mainMenuForm.lblDailySales.hide(); 

      this.setVisible(false); 
     } 
    } 
} 

// if we didn't find the user/password combination, display the error message 
if(!found) { 
    JOptionPane.showMessageDialog(null, "Invalid User ID or Password!", "Login Error", JOptionPane.OK_OPTION); 
} 
1

Javaのループを突破するには、breakが使用されます。

userData = usersMap.get(userId); 
credentialsCorrect = userData != null && matches(userData, password) 
if (credentialsCorrect) { 
    showCorrectCredentialsResponse(); 
} else { 
    showWrongCredentialsResponse(); 
} 
:手動ループをする必要はありませんので、さらに良い

credentialsCorrect = false; 
loop(usersList) { 
    if (correct credentials) { 
    credentialsCorrect = true; 
    break; 
    } 
} 
if (credentialsCorrect) { 
    showCorrectCredentialsResponse(); 
} else { 
    showWrongCredentialsResponse(); 
} 

あるいは、キーとしてユーザーIDを持つマップ:

は何が欲しいの擬似コードでは、このようなものであり、

1

質問が正しく理解されている場合は、breakキーワードを使用してループを解除できます。コードを整理したい場合は、ifステートメントをswitchステートメントに置き換えて可読性を向上させることができます。

0

はあなたがbreakステートメントを使用することができますが、私はそれに対してアドバイスでしょう、すべてのユーザー

関連する問題