Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
(TXT文件)Java GUI登录_Java_Swing_Text Files - Fatal编程技术网

(TXT文件)Java GUI登录

(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;

我想从名为“members.txt”的文本文件登录,该文件使用第二行(用户名)和第三行(密码)以及“/”分隔符。但当我运行它时,它们似乎可以按顺序识别文本文件的所有帐户。请帮忙。这是我的密码

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%地解决了这个问题。如果有助于解决问题,请告诉我。