Я создал диалоговое окно входа пользователя, которое сравнивает имя пользователя и пароль, которые они сохранили в файле csv, с тем, что они ввели в соответствующие текстовые поля. До появления имени входа я использовал JOptionPanes для отображения операторов возврата, в которые я передал пароль имени пользователя. Панель JOptionPane отображает имя и пароль. Но после того, как я войду в систему, введите имя и пароль для сравнения, авторизация не удалась. Когда я использовал JOptionPane для отображения того же имени пользователя и пароля снова, он говорит, что оба являются нулевыми. Я сузил проблему, где я настроил отдельный логический метод, который я использую, чтобы увидеть, равно ли то, что вводит пользователь, значению возвращаемого метода, но по какой-то причине мои методы возврата возвращаются к 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;
}
}
});