(TXT文件)Java GUI登录
我想从名为“members.txt”的文本文件登录,该文件使用第二行(用户名)和第三行(密码)以及“/”分隔符。但当我运行它时,它们似乎可以按顺序识别文本文件的所有帐户。请帮忙。这是我的密码(TXT文件)Java GUI登录,java,swing,text-files,Java,Swing,Text Files,我想从名为“members.txt”的文本文件登录,该文件使用第二行(用户名)和第三行(密码)以及“/”分隔符。但当我运行它时,它们似乎可以按顺序识别文本文件的所有帐户。请帮忙。这是我的密码 btn1.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { try { String s;
btn1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
String s;
String bypassid = "guest";
String bypasspw = "guest";
String[] array;
boolean isLogin= false; // 포기
BufferedReader br = new BufferedReader(new FileReader("members.txt"));;
while((s=br.readLine())!=null) {
array=s.split("/");
if(txtID.getText().equals(array[1])&&txtPass.getText().equals(array[2])){
JOptionPane.showMessageDialog(null, "로그인 되셨습니다");
break;
} else if(array.length != 0 && bypassid.equals(txtID.getText())&&bypasspw.equals(txtPass.getText())){
JOptionPane.showMessageDialog(null, "로그인 되셨습니다");
break;
} else {
JOptionPane.showMessageDialog(null, "계정 정보를 다시 확인해주세요.");
}
}
br.close();
} catch (IOException e10) {
// TODO Auto-generated catch block
e10.printStackTrace();
}
}
});
实际上,您正在读取每一行,如果用户/密码不匹配,则在else{}块中打印错误消息。您只需设置一次布尔变量isLogin,查看isLogin是否为false,并在循环外打印一次错误消息。下面是这方面的代码片段。用下面的代码替换actionPerformed方法
public void actionPerformed(ActionEvent e) {
try {
String s;
String bypassid = "guest";
String bypasspw = "guest";
String[] array;
boolean isLogin= false; // 포기
BufferedReader br = new BufferedReader(new FileReader("members.txt"));
while((s=br.readLine())!=null) {
array=s.split("/");
if(txtID.getText().equals(array[1])&&txtPass.getText().equals(array[2])){
JOptionPane.showMessageDialog(null, "로그인 되셨습니다");
isLogin = true;
break;
} else if(array.length != 0 && bypassid.equals(txtID.getText())&&bypasspw.equals(txtPass.getText())){
JOptionPane.showMessageDialog(null, "로그인 되셨습니다");
isLogin = true;
break;
}
}
if(!isLogin) {
JOptionPane.showMessageDialog(null, "계정 정보를 다시 확인해주세요.");
}
br.close();
} catch (IOException e10) {
// TODO Auto-generated catch block
e10.printStackTrace();
}
}
只需小心@David Kroukamp在评论中提到的内容代码似乎会遍历所有用户名/密码并使用输入进行检查,如果用户名和密码都匹配,循环将中断。否则它将打印“계정 정보를 다시 확인해주세요." 对于文件中的每一行。您面临的问题是什么?您使用的是
array[1]
和array[2]
。除非我缺少从0开始的数组,否则第一个元素是array[0]
,第二个元素是array[1]
。您尝试过吗?如果您使用用户1、用户2、用户3的帐户注册,然后尝试以用户3的身份登录, 一旦按下登录按钮,在用户1的数据值中,报警“登录失败”。在用户2的数据值中,出现报警“登录失败”。用户3的数据值表示登录成功。我想发布一个成功登录的通知窗口,只识别用户列表中正确的用户。整个过程只需按一下登录按钮即可完成。让我们看看。您没有向我们显示members.txt文件中的示例。你没有用英语解释你的信息对话框中的信息是什么。您没有提供一个清晰显示您的问题的工具,以便我们可以获取代码,将其放在IDE中,并对其进行修补,直到它工作为止。当你准备好编辑这个问题并帮助我们时,也许有人会帮助你。非常感谢你。。。你的建议帮了大忙。我100%地解决了这个问题。如果有助于解决问题,请告诉我。