我最近开始学习Java,我打算创建一个具有文本文件验证功能的登录系统。该图显示了我打算进行的登录验证。 Intending flow of operation
BufferedReader bra = new BufferedReader(new FileReader("C:\\Users\\Owner\\Desktop\\Admin.txt"));
int num = typebox.getSelectedIndex();
switch (num)
{
case 0: while ((reader = bra.readLine()) != null)
{
String[] split0 = reader.split("\\s");
User admin = new User();
admin.username = nametextbox.getText();
admin.password = passtextbox.getText();
\\login verification
if (admin.username.equals(split0[0]) && admin.password.equals(split0[1]))
{
bra.close();
A_Selection puff = new A_Selection();
puff.pack();
puff.setLocationRelativeTo(null);
puff.setVisible(true);
}
else
{
bra.close();
JOptionPane.showMessageDialog(null, "Error, wrong username or password!", "Error", JOptionPane.ERROR_MESSAGE);
}
}
}
break;
但是,它倾向于重复错误部分,直到文本文件中的行数结束。有什么方法可以使系统在读取整个文件后仅产生一次错误输出?
答案 0 :(得分:0)
休息应该可以。
...
else
{
bra.close();
JOptionPane.showMessageDialog(null, "Error, wrong username or password!", "Error", JOptionPane.ERROR_MESSAGE);
break;
}
...
答案 1 :(得分:0)
已解决: 我已经弄清楚了,借助于声明另一个变量和if条件的帮助。
int flag = 0;
if (admin.username.equals(split0[0] && admin.password.equals(split0[1]))
{
flag = 1;
if (flag == 1)
{
A_Selection puff = new A_Selection();
puff.pack();
puff.setLocationRelativeTo(null);
puff.setVisible(true);
}
}
\\outside while loop
if (flag == 0)
{
JOptionPane.showMessageDialog(null, "Error");
}