即使用户名和密码正确,在进入下一帧之前也会显示错误消息。 (JAVA)
Error message is displayed before going to next frame even though username and password is correct. (JAVA)
这是我的 txt 文件。
bk 456
bg 123
ll 222
pp 333
这是我的代码。
String m_uname = ManagerID.getText();
String m_pw = managerpw.getText();
try
{
BufferedReader br = new BufferedReader(new FileReader("C:\Users\L\Desktop\NewAssignmentOODJ\textfile\ManagerLoginDetails.txt"));
String reader;
boolean login = false;
while ((reader = br.readLine())!=null)
{
String[] split = reader.split(" ");
if (m_uname.equals(split[0]) && m_pw.equals(split[1]))
{
login = true;
ManagerForm mform = new ManagerForm();
mform.setVisible(true);
this.setVisible(false);
break;
}
else
{
JOptionPane.showMessageDialog(null,"Whoops!","Error",JOptionPane.ERROR_MESSAGE);
}
}
}
catch (Exception e)
{
JOptionPane.showMessageDialog(null,"Invalid Login Details","Login Error",JOptionPane.ERROR_MESSAGE);
}
登录功能有效,但它会在移动到下一个 jframe 表单之前显示错误消息。例如。如果我输入 pp 和 333,错误消息会显示 3 次,然后才会移动到下一帧。
第一组用户名和密码没问题。
您应该只在循环执行完毕后显示登录错误。它显示错误三次,因为它在检查下一对之前检查每一对,所以当你输入 "pp" 和“333”时,它检查前三对并发现它不匹配,之前显示三个错误消息将最后一个识别为匹配项。考虑以下代码:
String m_uname = ManagerID.getText();
String m_pw = managerpw.getText();
try
{
BufferedReader br = new BufferedReader(new FileReader("C:\Users\L\Desktop\NewAssignmentOODJ\textfile\ManagerLoginDetails.txt"));
String reader;
boolean login = false;
while ((reader = br.readLine())!=null)
{
String[] split = reader.split(" ");
if (m_uname.equals(split[0]) && m_pw.equals(split[1]))
{
login = true;
ManagerForm mform = new ManagerForm();
mform.setVisible(true);
this.setVisible(false);
break;
}
}
if(!login)
{
JOptionPane.showMessageDialog(null,"Whoops!","Error",JOptionPane.ERROR_MESSAGE);
}
}
catch (Exception e)
{
JOptionPane.showMessageDialog(null,"Invalid Login Details","Login Error",JOptionPane.ERROR_MESSAGE);
}
这是我的 txt 文件。
bk 456
bg 123
ll 222
pp 333
这是我的代码。
String m_uname = ManagerID.getText();
String m_pw = managerpw.getText();
try
{
BufferedReader br = new BufferedReader(new FileReader("C:\Users\L\Desktop\NewAssignmentOODJ\textfile\ManagerLoginDetails.txt"));
String reader;
boolean login = false;
while ((reader = br.readLine())!=null)
{
String[] split = reader.split(" ");
if (m_uname.equals(split[0]) && m_pw.equals(split[1]))
{
login = true;
ManagerForm mform = new ManagerForm();
mform.setVisible(true);
this.setVisible(false);
break;
}
else
{
JOptionPane.showMessageDialog(null,"Whoops!","Error",JOptionPane.ERROR_MESSAGE);
}
}
}
catch (Exception e)
{
JOptionPane.showMessageDialog(null,"Invalid Login Details","Login Error",JOptionPane.ERROR_MESSAGE);
}
登录功能有效,但它会在移动到下一个 jframe 表单之前显示错误消息。例如。如果我输入 pp 和 333,错误消息会显示 3 次,然后才会移动到下一帧。
第一组用户名和密码没问题。
您应该只在循环执行完毕后显示登录错误。它显示错误三次,因为它在检查下一对之前检查每一对,所以当你输入 "pp" 和“333”时,它检查前三对并发现它不匹配,之前显示三个错误消息将最后一个识别为匹配项。考虑以下代码:
String m_uname = ManagerID.getText();
String m_pw = managerpw.getText();
try
{
BufferedReader br = new BufferedReader(new FileReader("C:\Users\L\Desktop\NewAssignmentOODJ\textfile\ManagerLoginDetails.txt"));
String reader;
boolean login = false;
while ((reader = br.readLine())!=null)
{
String[] split = reader.split(" ");
if (m_uname.equals(split[0]) && m_pw.equals(split[1]))
{
login = true;
ManagerForm mform = new ManagerForm();
mform.setVisible(true);
this.setVisible(false);
break;
}
}
if(!login)
{
JOptionPane.showMessageDialog(null,"Whoops!","Error",JOptionPane.ERROR_MESSAGE);
}
}
catch (Exception e)
{
JOptionPane.showMessageDialog(null,"Invalid Login Details","Login Error",JOptionPane.ERROR_MESSAGE);
}