【问题标题】:verifying username/password from text file in java从java中的文本文件验证用户名/密码
【发布时间】:2017-06-25 20:57:10
【问题描述】:

我正在尝试创建一个非常基本的登录系统,该系统将用户输入的用户名和密码验证为存储在文本文件中的用户名和密码。我查看了本网站和其他地方的其他示例,但我无法让它们正常工作。我知道文本文件不安全,但这只是为了学习目的,不会在任何严重的情况下实现。

它正在读取的文本文件包含这两行,格式为“用户名,密码”

学生1,学生1

学生2,学生2

If 语句的目标是验证登录凭据,然后打开下一帧。我还没有添加该部分的代码,因为我无法调试所有内容。

代码如下:

btnLogin.addActionListener(new ActionListener(){
           public void actionPerformed(ActionEvent e){
           File loginf = new File("users.txt");

                try{
                    Scanner read = new Scanner(loginf);
                    read.useDelimiter(",");
                    boolean login = false;
                    while(read.nextLine() !=null){
                           String user = read.next();
                           String pass = read.next();
                           read.next();
                           if(username.getText().equals(user) && passwordField.getText().equals(pass)){
                              login = true;
                              break;                 
                           }
                        }
                        if(login)
                           System.out.println("good"); //using for testing purposes
                        else {
                           JOptionPane.showMessageDialog(null, "Incorrect username or password");
                           username.setText("");
                           passwordField.setText("");
                        }
                    read.close();
                }
                catch (FileNotFoundException qwerty){
                        JOptionPane.showMessageDialog(null, "Can't find a text file");
                }
           }
        });

提前感谢您的所有帮助。

【问题讨论】:

  • 你的问题是......
  • 您遇到的具体问题是什么?
  • || 表示or。你想要&&,这意味着and
  • 我一直遇到这个异常:线程“AWT-EventQueue-0”中的异常 java.util.NoSuchElementException @Scraniel
  • 编辑问题,写下你遇到的问题

标签: java login text-files java.util.scanner


【解决方案1】:

你可能想要使用这样的东西。

    Scanner read = new Scanner(loginf);
    read.useDelimiter("\\n|,");
    boolean login = false;
    while(read.hasNext()){
       String user = read.next();
       String pass = read.next();
       System.out.println(user + " " + pass);
    }

我做到了

  • 删除您对 read.next() 的第三次调用,是什么导致了您的异常
  • 替换 readLine() 因为这会让你跳过一些行
  • 添加换行符作为分隔符,因为您的数据也由此分割

【讨论】:

    【解决方案2】:

    把分隔符改成:,扔掉Scanner,改用java.util.Properties.

    【讨论】:

      【解决方案3】:

      在获取用户并通过后删除 read.next() 行。它肯定会起作用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-04-11
        • 1970-01-01
        • 2021-12-22
        • 1970-01-01
        • 2023-04-01
        • 2016-12-13
        • 1970-01-01
        相关资源
        最近更新 更多