Экран входа в Java с использованием текстового файла

Я создаю 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());
    }
 }   

person Yoosuf    schedule 11.09.2010    source источник
comment
Определите не работает должным образом. Какое именно поведение вы видите и чем оно отличается от того, что вы ожидаете увидеть? Какие ошибки вы получаете (если есть)?   -  person Thomas Owens    schedule 11.09.2010
comment
Не могли бы вы прикрепить текст в этом файле   -  person Damian Leszczyński - Vash    schedule 11.09.2010
comment
ПИН-счет без баланса 1598 01-10-102203-0 95000 4895 01-10-102248-0 45000 9512 01-10-102215-0 125000 6125 01-10-102248 85000   -  person Yoosuf    schedule 11.09.2010
comment
Я прикрепил текст в файле блокнота (выше). Я помещал каждую запись в новую строку и сохранял ее. Проблема с этим кодом в том, что после ввода PIN-кода программа останавливается.   -  person Yoosuf    schedule 11.09.2010


Ответы (1)


Предполагая, что это ваши входные данные

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, чтобы сделать это, так как он позволит вам извлечь пин-код/номер учетной записи в виде строк и баланс в виде двойного/целого числа.

На данный момент вы сравниваете ввод пользователя со всей строкой, поэтому вам нужно будет ввести пин-код 1598 01-10-102203-0 95000, а не 1598, чтобы войти в систему.

Я предлагаю вам разделить это на два метода, один из которых при получении файла возвращает ссылку Collection из Account объектов и еще один, который обрабатывает вход в систему.

Вы можете переписать свой цикл while, чтобы дать вам полезное сообщение об ошибке, если вы не получите действительный пин-код, например.

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
}
person Jon Freedman    schedule 11.09.2010
comment
я не понимаю, как мне создать метод Account (Account userAcc=null). Пожалуйста, помогите мне, я пробовал это уже несколько дней безрезультатно - person Yoosuf; 17.09.2010
comment
Вы имеете в виду, что не знаете, как реализовать getAccounts? или как создать класс Account? - person Jon Freedman; 17.09.2010