HashMap (login,pin) a wczytywanie Scannera

0

Witam, próbuję stworzyć "aplikację" w której mam możliwość założenia karty bankowej metoda wygląda tak:

Map<String, Integer>  cardHashMap = new HashMap<String, Integer>();
void createNewCard(){
        Scanner scanner = new Scanner(System.in);
        System.out.println("Enter first name:");
        String name = scanner.nextLine();
        System.out.println("Enter the last name:");
        String lastName = scanner.nextLine();
        System.out.println("Enter your log in:");
        String logIn = scanner.nextLine();
        System.out.println("Enter your four-digit pin number:");
        int pin = scanner.nextInt();
        cardHashMap.put(logIn,pin);
        startProgramm();
    }

Później mam oczywiście metodę logowania do systemu.

  System.out.println("Please enter your login: ");
            Scanner scLog = new Scanner(System.in);
            String login = scLog.nextLine();
            System.out.println("Please enter your password: ");
            Scanner scPas = new Scanner(System.in);
            Integer password = scPas.nextInt();

            for (Map.Entry List : cardHashMap.entrySet()) {
                if (List.getKey().equals(login)&& List.getValue().equals(password)) {
                    System.out.println("login i pin wystepuje");
                  } else {
                    System.out.println("Unknown login");
                    return false;
                }

Wszystko działa poprawnie do momentu kiedy podczas uruchomienia aplikacji zostanie założone kilka kont przy użyciu metody createNewCard(), logowanie do systemu jest możliwe tylko i wyłącznie przy użyciu ostatnio założonej karty, chciałbym żeby logowanie było możliwe z każdej założonej karty (przy wpisaniu odpowiedniego loginu i pinu). Czy ktoś jest w stanie pomóc z rozwiązaniem tego problemu?
Pozdrawiam

3

Winowajcą jest return false - jeśli przy 1 elemencie pierwszy warunek nie zostanie spełniony, to po zwróci ci false.

3

Pin jako int? A co jak ktoś ma Pin zaczynający się od zera?

2

for (Map.Entry List : cardHashMap.entrySet()) {

To jest żart? Po co trzymasz dane w mapie, skoro korzystasz z niej jak z listy krotek? o_O Cały sens istnienia mapy jest taki ze możesz zrobić jakieś

return password == cardHashMap.get(login)
0

@Shalom: dopiero się uczę więc proszę o wyrozumiałość :) chciałem aby login był unikalny więc pierwsze co to pomyślałem o mapie. Proponujesz abym mapę zastąpił listą?

2

@Slintel: nie, mapa jest dobra tylko wykorzystaj get na podstawie klucza. I jak pisałem int na pin jest nieprawidłowy

0

@scibi_92: jak najbardziej słuszna uwaga z tym intem, nie zwróciłem wcześniej na to uwagi, po pracy do tego przysiądę spróbuję wykorzystać geta, dzięki za pomoc 😄

1 użytkowników online, w tym zalogowanych: 0, gości: 1