2016-04-18 3 views
-2

JAVAを使用してログインフォームを作成していました。 私はそれを働かせますが、入力内容に関係なく、別のJFrameにリンクし、同時に、入力された配列が初期化された配列に関係なく、エラーメッセージが表示されます。チェックのための私のループは間違っていますか? 誰かが助けてくれることを祈って、感謝します!JFrameフォームからユーザー入力と初期化配列を比較JAVA

import java.awt.Toolkit; 
import java.awt.event.WindowEvent; 
import javax.swing.*; 

public class Login extends javax.swing.JFrame { 
private String [] loginid = {"1001","1002","1003","1004","1005"}; 
private String [] password = {"abc1","abc2","abc3","abc4","abc5"}; 

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {           
    for(int times=0;times<loginid.length;times++) 
    { 
     for(int count=0;count<password.length;count++){ 
     loginid[times]=jTextField1.getText(); 
     password[times]=jPasswordField1.getText(); 

     if(loginid[times]==loginid[count] && password[times]==password[count]) 
     { 
      jTextField1.setText(""); 
      jPasswordField1.setText(""); 
      this.setVisible(false); 
      new FrontPage().setVisible(true); 
     } 
     else 
     JOptionPane.showMessageDialog(null, "Information invalid. Please try again."); 
     this.setVisible(false); 
     } 
    } 
}  

私はLOGINボタンでコーディングを行います。

ありがとうございました。

答えて

2

ネストされたループを理解できません。このような何か:もちろん

private int failedAttempts = 0;  

public void tryLogin() { 
    final String username = jTextField1.getText(); 
    final String password = jPasswordField1.getText(); 

    // if (failedAttempts >= 3) ... 

    if (loginOK(username, password)) { 
     jTextField1.setText(""); 
     jPasswordField1.setText(""); 
     this.setVisible(false); 
     new FrontPage().setVisible(true); 
    } 
    else { 
     if (++failedAttempts >= 3) { 
      JOptionPane.showMessageDialog(null, "Too many errors. bye."); 
      System.exit(0); // or something 
     } 

     JOptionPane.showMessageDialog(null, "Information invalid. Please try again."); 
     this.setVisible(false); 
    } 
} 

public boolean isLoginOK(String username, String password) { 
    for (int i=0; i<loginid.length; i++) 
     if (username.equals(loginid[i]) && password.equals(password[i])) 
      return true; 

    return false; 
} 

あなたは、メモリ内のプレーンなパスワードを格納しているが、私は、このアプリケーションは、優れたセキュリティを必要としないと仮定し...私は見

+0

ので、私は別のループを作成する必要がありますメソッドは、私は混乱しないように...ソリューションのおかげで、それは完璧に働いた!ありがとうございました! –

関連する問題