我正在試圖創建一個JFrame來檢查放置在JTextField中的文本是否與.txt文件中的信息相同。 然後如果這是正確的,它會檢查JPasswordField中的信息是否與.txt文件中的信息匹配。爲什麼我的字符串檢查代碼不工作
public void actionPerformed(ActionEvent e)
{
if(e.getSource() == button)
{
if(!username.getText().equals("") && passIsGood())
{
try
{
Scanner reader = new Scanner(new File("users.txt"));
reader.useDelimiter("\t|\n");
reader.nextLine();
while(reader.hasNextLine())
{
if(reader.next().equals(username.getText()))
{
//Username is correct, now checks for password:
System.out.println("Username passed");
if(reader.next().equals(passToString()))
{
//Username & Password are correct
System.out.println("Password passed");
break;
}
} else if(!reader.hasNextLine())
{
wrongInfo();
} else
{
reader.nextLine();
}
}
reader.close();
frame.dispose();
} catch(Exception ex)
{
JOptionPane.showMessageDialog(null, ex);
}
} else
{
JOptionPane.showMessageDialog(null, "Please enter a valid Username and Password");
}
}
}
private static String passToString()
{
String passString = new String(password.getPassword());
return passString;
}
我得到儘可能的用戶名路過,但我覺得像.equals(passToString())可能是造成問題的原因。 文本文件看起來像這樣: 用戶名密碼 測試thetest test2的thetest3
注意,在每個字段之間的空間是使用標籤,因此我的分隔符(「\ t | \ n」);
users.txt中的每個第二個字段後是一個新行 – Otanan
爲什麼你需要在頂部調用reader.nextLine()? – sasankad
@sasankad我的.txt文件的第一行是用於格式化的,它說「用戶名密碼」作爲第一行來表示如何寫出其餘的內容,我想忽略它 – Otanan