Сопоставление данных из текстового файла с пользовательским вводом в Java - PullRequest
0 голосов
/ 17 сентября 2010

Мне нужно извлечь ПИН-код из файла блокнота (ниже) и проверить его с помощью ПИН-кода, введенного пользователем. Я пробовал это в течение нескольких дней, но пока решение, которое я нашел, дает мне правильный вывод только тогда, когда я набираю полную строку (т. Е. 1598 01-10-102203-0 95000). Также он отображает «Неверный PIN-код» для каждой записи.

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

Output - You have login!

    Invalid PIN    
    Invalid PIN
    Invalid PIN
BufferedReader getIt = new BufferedReader(new InputStreamReader(System.in));
String userPIN = "";

try {
    // Open the file that is the first command line parameter
    FileInputStream fstream = new FileInputStream(
        "D:\\Studies\\BCAS\\HND\\Semester 1\\Programming "
        + "Concepts\\Assignment\\AccountInfo.txt");
    // Get the object of DataInputStream
    DataInputStream in = new DataInputStream(fstream);
    BufferedReader br = new BufferedReader(new InputStreamReader(in));
    String strLine;
    //Read File Line By Line
    System.out.println("Enter PIN");
    userPIN = getIt.readLine();

    while ((strLine = br.readLine()) != null) {
        // Print the content on the console#    
        if (userPIN.equals(strLine)) {
            System.out.println("You have login!");
        } else {
            System.out.println("Invalid PIN!");
        }
    }
    //Close the input stream
    in.close();
} catch (Exception e) {//Catch exception if any
    System.err.println("Error: " + e.getMessage());
}

1 Ответ

3 голосов
/ 17 сентября 2010

Важным элементом отлично ответа Джона Фридмана , который вы должны принять, является то, что вы должны разбить входящую строку текста на составные части, чтобы сравнить к тому, что набрано. Вот один из подходов:

String line = "1598 01-10-102203-0 95000";
for (String s : line.split(" ")) {
    System.out.println(s);
}

Это дает следующий вывод:

1598
01-10-102203-0
95000

Добавление:

while ((strLine = br.readLine()) != null) {
    String[] a = strLine.split(" ");
    // now the array a contains the three parts
    ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...