使用文本文件的 Java 登录屏幕

标签 java text file authentication

我正在创建一个 java 应用程序,我需要从文本文件中获取用户 PIN。我使用了下面的代码,但它不能正常工作。有人可以尽快帮我吗......

    String typedPIN="";   
    Menus obj1=new Menus();
    BufferedReader getIt=new BufferedReader(new InputStreamReader(System.in));
    String userPIN="";
    try{
        BufferedReader br = new BufferedReader(new FileReader(new File("D:\\Studies\\BCAS\\HND\\Semester 1\\Programming Concepts\\Assignment\\AccountPIN.tab")));
        String strLine=null                    ;
        System.out.println("Enter PIN");
        userPIN=getIt.readLine();  
        while ((strLine = br.readLine()) != null)   {          
            if(userPIN.equals(strLine)){
                System.out.println("You have login!");
                obj1.MainMenu();
            }
        }    
    }catch (Exception e){//Catch exception if any
            System.err.println("Error: " + e.getMessage());
    }
 }   

最佳答案

假设这是您的输入数据

PIN AccountNo Balance
1598 01-10-102203-0 95000
4895 01-10-102248-0 45000
9512 01-10-102215-0 125000
6125 01-10-102248 85000

您需要将每一行拆分为其组成部分,您可以使用 Scanner类来执行此操作,因为它可以让您将密码/帐号提取为字符串,并将余额提取为 double /整数。

目前您正在将用户输入与整行进行比较,因此您需要输入 pin 1598 01-10-102203-0 95000 而不是 1598 以便登录。

我建议您将其分为两种方法,其中一种方法在给定文件时返回 Collection Account 对象,另一个处理登录。

您可以重写 while 循环,以便在没有获得有效 pin 时给出有用的错误消息,例如

final File data = new File("D:\\Studies\\BCAS\\HND\\Semester 1\\Programming Concepts\\Assignment\\AccountPIN.tab");
Account userAcc = null;
for (Account acc : getAccounts(data)) {          
    if(userPIN.equals(acc.getPin())){
        userAcc = acc;
    }
}
if (userAcc == null) {
    obj1.MainMenu();
} else {
    // display error
}

关于使用文本文件的 Java 登录屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3690805/

相关文章:

java - Android SQLite 简介

c++ - 插入器和提取器读取/写入二进制数据与文本

linux - 如何在 unix 系统上回显/打印实际文件内容

c++ - 监视日志文件时崩溃 (C++)

file - Unix 行为,两个不同的进程将描述符保存到同一文件,一个进程删除文件

windows - 根据名称将文件批量移动到新的子文件夹

java - 将 Java 对象转换为整数

java - Android (Kotlin) 与非字符串基元类型的双向数据绑定(bind)

java - java中的过程调用抛出异常

c - 从 txt 文件 C 中读取和比较数字