わかりました、ユーザー名とパスワードのデータを保存するためのより簡単な方法を実行しました。ユーザーが登録フォームを送信すると、テキスト ファイルに出力されます
private class submitListener implements ActionListener {
public void actionPerformed(ActionEvent e){
try {
String newEmail, newUser, systemMsg;
char[] newPass;
char[] confirmNewPass;
newEmail = emailField.getText();
newUser = usernameField.getText();
newPass = passwordField.getPassword();
confirmNewPass = confirmPassField.getPassword();
String strPass = new String(newPass);
String strConfPass = new String(confirmNewPass);
if(strPass.equals(strConfPass) && !newEmail.isEmpty() && !newUser.isEmpty() &&
!strPass.isEmpty()){
BufferedWriter out = new BufferedWriter(new FileWriter("Data.txt", true));
BufferedWriter emailOut = new BufferedWriter(new FileWriter("email.txt", true));
out.write(newUser);
out.write("\t\t");
out.write(newPass);
out.write(System.getProperty("line.separator"));
emailOut.write(newEmail);
emailOut.write(System.getProperty("line.separator"));
systemMsg = "New account created, please log in.";
JOptionPane.showMessageDialog(null, systemMsg);
((CardLayout)cardPanel.getLayout()).show(cardPanel, "login");
emailField.setText(null);
usernameField.setText(null);
passwordField.setText(null);
confirmPassField.setText(null);
out.close();
emailOut.close();
}
else{
systemMsg = "Please enter the missing information.";
JOptionPane.showMessageDialog(null, systemMsg);
}
}catch(IOException E){}
}
}
次に、ログイン情報と既存のテキスト ファイルを次のように比較します。
private class LoginListener implements ActionListener {
public void actionPerformed(ActionEvent e){
String username, inUsername, inPass, str = "Incorrect username or password.";
char[] password;
username = usernameField.getText();
password = passwordField.getPassword();
//Convert char to str
String convertPass = new String(password);
try {
fileScan = new Scanner(new File("Data.txt"));
}catch(Exception err){}
while(fileScan.hasNext()){
inUsername = fileScan.next();
inPass = fileScan.next();
if(username.equals(inUsername) && convertPass.equals(inPass)){
((CardLayout)cardPanel.getLayout()).show(cardPanel, "main");
counter++;
}
}
if(counter == 0){
JOptionPane.showMessageDialog(null, str);
usernameField.setText(null);
passwordField.setText(null);
}
fileScan.close();
}
}
しかし、プログラムを実行すると、ユーザー名またはパスワードが正しいにもかかわらず、間違ったユーザー名またはパスワードが報告され続けます。これを修正する方法は?