私はcsvファイルに保存されているユーザーの名前とパスワードを、対応するテキストフィールドで入力したものと比較するユーザーログインダイアログボックスを作成しました。ログインが表示される前に、JOptionPanesを使用して、ユーザー名のパスワードを渡したreturn文を表示しています。 JOptionPaneには、名前とパスワードが表示されます。しかし、私はログインが表示された後、名前とパスワードを比較するには、ログインが成功していないを入力します。 JOptionPaneを使用して同じユーザー名とパスワードを再度表示すると、両方ともnullと表示されます。私は、ユーザーが入力したものがreturnメソッドの値と等しいかどうかを確認するために使用する別個のブール値メソッドをセットアップした問題を絞り込んだが、何らかの理由で、返すメソッドが比較前にNULLに戻る。java/swing-値を割り当てた後、返却メソッドがNULLに戻るのはなぜですか?
これはなぜ起こっているのですか?繰り返しますが、何らかの理由での"getName()"と"getPass()"が返されます。
/**Read csv data. put data into array, then elements into variables */
String lines = "";
String unparsedFile = "";
FileReader fr = new FileReader("c:\\foo\\user.dat");
BufferedReader br = new BufferedReader(fr);
while((lines = br.readLine()) != null){
unparsedFile += lines;
}
br.close();
userData = unparsedFile.split(",");
String g = userData[0];
g1 = userData[0]; // return in String method "getName()"
this.name = g1;
h1 = userData[1]; // returned in String method "getPass()"
this.password = h1;
///////////////////////////////
/* check if what you entered is same as getName() and getPass() */
public static boolean authenticate(String username, String password){
String g2, h2;
g2 = cn.getName();
h2 = cn.getPass();
JOptionPane.showInputDialog(null, cn.getName() + " login " + cn.getPass());
if(username.equals(g2) && password.equals(h2)){
JOptionPane.showInputDialog(null, "True");
return true;
}
JOptionPane.showInputDialog(null, cn.getName() + " login false " + cn.getPass());
return false;
}
////////////////////////
/* Login: enter name and password, the check if it matches getName() and getPass() */
nam = tfUsername.getText();
passA = pfPassword.getText();
if(Login.authenticate(nam, passA)){
JOptionPane.showMessageDialog(UserLogin.this,
"Welcome, " + cn.getChatName() + ". Login successful.",
"Login",
JOptionPane.INFORMATION_MESSAGE);
succeeded = true;
dispose();
}
if(!nam.equals(cn.getName()) && !passA.equals(cn.getPass())){
JOptionPane.showMessageDialog(UserLogin.this, "Invalid username or password",
"Login unsuccessful", JOptionPane.ERROR_MESSAGE);
//reset username and password
tfUsername.setText("");
pfPassword.setText("");
succeeded = false;
}
}
});
[SSCCE](http://pscode.org/sscce.html)を入力した場合、回答が得られるかもしれません。我々は 'cn'が何であるかを知りません。 – Howard
@Howard cnは単なるクラス名です。 3つのセクションは3つの異なるクラスです。 – SpicyWeenie
ハワードはより多くのコードを必要としています.cnはミステリーなので、setNameとsetPasswordがどこで呼び出されているか分かります。 –