Назовите точное значение из текстового файла - PullRequest
0 голосов
/ 01 апреля 2019

Привет, ребята, нужна помощь для моего мини-проекта для школ.Как сравнить пользовательский ввод и сопоставить с моей базой данных в текстовом файле.это похоже на срок действия имени пользователя и пароля.Я хочу вызвать вторую строку в моей базе данных, используя номер счета и пин-код.

это моя база данных.

0,admin,adminLastName,123456,123456
1,user,userLastName,1234567,123456

0 = id
admin = name
adminLastName = Last Name
1234567 = accountNumber
123456 = pin

и это мой код.

package atm;

import java.io.File;
import java.util.Scanner;

public class Login {

 static void verifyLogin(String name, String lastName, String userAccountNumber, String userPin, String filePath){
    Scanner inputData = new Scanner(System.in);
    boolean isFound = false;
    String tempAccountNumber = "";
    String tempPin = "";

     System.out.print("\nAccount Number: ");
     userAccountNumber = inputData.next();

     System.out.print("\nPIN: ");
     userPin = inputData.next();

        try{
            Scanner readTextFile = new Scanner(new File("myDataBase.txt")).useDelimiter("[,\n]");
            while (readTextFile.hasNext() && !isFound){
                tempAccountNumber = readTextFile.next();
                tempPin = readTextFile.next();
                if (tempAccountNumber.trim().equals(userAccountNumber.trim()) && tempPin.trim().equals(userPin.trim())){
                    isFound = true;
                    System.out.println("Welcome " + name+ " " +lastName);
                    System.out.println("\nLogin Successfully!");
                }
                else {
                    System.out.println("You have entered your PIN or ACCOUNT NUMBER incorrectly. Please check your PIN or ACCOUNT NUMBER and try again.\n If you don't have account yet please go to SignUp page!\n");
                    myMain mainMenu = new myMain();
                    mainMenu.inputKeyboard();
                }
            }
            readTextFile.close();
        }
        catch (Exception e){
        }
    inputData.close();
    }
}

1 Ответ

0 голосов
/ 01 апреля 2019

Если ваш текстовый файл содержит 1 пользователя на строку, и вы разделяете его с помощью ',', тогда вы можете взять каждую строку, как и вы, затем разбить эту строку на массив строк [] и проверить, соответствует ли имя имени 'admin .

public class Main {

static Scanner input = new Scanner(System.in);

public static void main(String[] args) {

    Boolean loggedin = false;

    String fileName = "accounts.txt";
    String line = null;

    System.out.println("What's your username?");
    String tempUsername = input.nextLine();

    System.out.println("What's your password?");
    String tempPassword = input.nextLine();

    try {
        FileReader fileReader = new FileReader(fileName);
        BufferedReader bufferedReader = new BufferedReader(fileReader);

        while((line = bufferedReader.readLine()) != null) {
            String[] currAccount = line.split(",");

            if (currAccount[1].equals(tempUsername) && currAccount[4].equals(tempPassword)) {
                loggedin = true;

                System.out.println("You have successfully logged in!");
            }
        }

        bufferedReader.close();
    }
    catch(FileNotFoundException ex) {
        ex.printStackTrace();

        // Let's create it if file can't be found or doesn't exist, but let's ask first.

        String answer;

        System.out.print("File not found, do you want to create it? [Y/n]: ");
        answer = input.nextLine();

        if (answer.equalsIgnoreCase("y")) {
            try {
                FileWriter fileWriter = new FileWriter(fileName);
                BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);

                System.out.println("File has been created!");
            } catch (IOException exc) {
                exc.printStackTrace();
            }
        } else {
            System.out.println("File was not created!");
        }

    }
    catch(IOException ex) {
        ex.printStackTrace();
    }

    if (!loggedin) {
        System.out.println("Your login combination did not exist.");
    }
}
}

Пожалуйста, обратите внимание, я не очень много комментировал, но это все равно должно иметь смысл.

После разбиения помните, что вы начинаете с индекса массива 0, а не с 1. Таким образом, с индекса 1 имя учетной записи будет.

Гудлак.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...