验证java

时间:2017-06-25 20:57:11

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

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

它正在阅读的文本文件包含以下两行格式"用户名,密码"

  

student1,student1

     

STUDENT2,STUDENT2

目标是让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");
                }
           }
        });

提前感谢您的所有帮助。

3 个答案:

答案 0 :(得分:0)

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

    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()因为这会让你跳过一些行
  • 将新行字符添加为分隔符,因为您的数据也会被此
  • 拆分

答案 1 :(得分:0)

将分隔符更改为:,丢弃Scanner,然后使用java.util.Properties.

答案 2 :(得分:0)

在获取用户并传递后,只需删除read.next()行。它肯定会起作用。