【发布时间】:2014-01-13 04:15:42
【问题描述】:
我正在尝试制作一个 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()) 可能会导致问题。 文本文件如下所示: 用户名密码 测试测试 test2 thetest3
请注意,每个字段之间的空格是制表符,因此我的分隔符使用 ("\t|\n");
【问题讨论】:
-
users.txt 中的每一秒字段之后都是一个新行
-
为什么需要在顶部调用 reader.nextLine()?
-
@sasankad 我的 .txt 文件中的第一行用于格式化,它说“用户名密码”作为第一行指示如何写出其余部分,我想忽略它
标签: java string swing java.util.scanner