我从文本文件中读取时出现此问题,其中凭据用新行分隔,例如新段落,我不知道如何阅读它们。以下是我的登录按钮代码:
private class Login implements ActionListener{
public void actionPerformed(ActionEvent Login){
Boolean login = false;
file = new File("Member Details.txt");
try {
read = new Scanner(file);
} catch (FileNotFoundException ex) {
Logger.getLogger(BTRSMain.class.getName()).log(Level.SEVERE, null, ex);
}
String user = read.next();
String pass = read.next();
if(loginpage.UsernameTB.getText().equals(user) && loginpage.PasswordTB.getText().equals(pass)){
login = true;}
if(login)
{
loginpage.frame.setVisible(false);
mainmenupage.frame.setVisible(true);
}
else
{
JOptionPane.showMessageDialog(null, "Incorrect username or password! Please re-enter!");
loginpage.UsernameTB.setText("");
loginpage.PasswordTB.setText("");
}
}
}
用户注册后,会员详细信息(即用户名和密码)将保存在文本文件中,每个文件都在新行the text file image here中,在登录页面中,第一个用户名和密码可以请阅读,但稍后,第二个用户名和密码无法读取,我该怎么办?如何在新行中读取该代码?
文本文件的文字如下:
第一行(第一个用户名):lulu
第二行(第一个密码):lili
第三行(第二个用户名):lili
第四行(第二个密码):lulu
它可以读取第一个用户名和密码,但不能读取第二个用户名和密码。
答案 0 :(得分:1)
您只需阅读一个用户名 - 密码对。您需要阅读整个文件。例如,如果我们每次保持当前读取文件的设计,你可以做这样的事情(我将登录检查逻辑分离到另一种方法。原始方法可以调用它并弹出相关消息):
private boolean canLogin(String user, String password) {
try (Scanner read = new Scanner(new File("Member Details.txt"))) {
while (read.hasNext()) {
String readUser = read.next();
String readPassword = read.next(); // Assume the file is well-formed
// If it's the right user, check the password
// If not, continue reading the file
if (user.equals(readUser)) {
return password.equals(readPassowrd);
}
}
catch (FileNotFoundException ex) {
Logger.getLogger(BTRSMain.class.getName()).log(Level.SEVERE, null, ex);
}
return false;
}