簡體   English   中英

Java HashMap 和 Iterator - 如何知道值是否與用戶相同

[英]Java HashMap and Iterator - How to know if value is the same as user

我正在學習如何使用哈希圖。 我正在嘗試構建一個 ATM 程序,如果用戶正確輸入他們的卡號和密碼,則允許用戶登錄。 下面是我的代碼。

import java.util.*;
import java.util.Scanner;
import java.util.Iterator;

public class Main {

    public static void main(String[] args) {
    // write your code here
        Map<String, String> map = new HashMap<>();
        map.put("123456789", "123456");
        map.put("987654321", "654321");

        Scanner in = new Scanner(System.in);
        System.out.println("Enter Your Card Number");
        String card = in.next();
        System.out.println("Enter Your Pin Number");
        String pin = in.next();
        String everything = card  + "=" + pin;

        Iterator i = map.entrySet().iterator();
        while(i.hasNext()) {
            String s = (String) i.next();
            if(everything == i.next()) {
                System.out.println("Congratulations for logging in");
            } else {
                System.out.println(i.next());
                System.out.println("Wrong Card Number Or Pin");
                System.out.println("Enter Your Card Number");
                card = in.next();
                System.out.println("Enter Your Pin Number");
                pin = in.next();
                everything = card + "=" + pin;
            }
        }

    }
}

我的問題是如何檢查用戶輸入是否與我在地圖中輸入的值之一相同? 謝謝你。

Map#get

根據經驗,如果您正在遍歷地圖以查找特定條目,那么您做錯了。 地圖的全部意義在於您可以直接查找密鑰。 調用Map#get ,傳遞鍵,取回映射到該鍵的值。

我假設地圖從卡號映射到 PIN。 在此基礎上:

boolean valid = false;
Scanner in = new Scanner(System.in);
while (!valid) {
    System.out.println("Enter Your Card Number");
    String card = in.next();
    System.out.println("Enter Your Pin Number");
    String pin = in.next();
    String actualPin = map.get(card);
    valid = pin.equals(actualPin);
    if (!valid) {
        // card number not found
        // or pins do not match
        System.out.println("Try again");
    }
}

順便說一句,您應該添加更多代碼來檢查null 如果用戶提交的卡號當前在我們的Map中找不到,則返回null

我想你可能有點想多了。 您需要做的只是首先檢查卡號(密鑰)是否在哈希圖中,如果是,則密碼是否匹配。

if (map.containsKey(card) && map.get(card).equals(pin)) {
    System.out.println("Congratulations for logging in");
} else {
    System.out.println("I'm sorry your card number or pin was incorrect");
}

這應該對您有用,我建議您閱讀有關 HashMaps 的文檔以更好地了解它們: https ://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM