Java HashMap - 如何创建第三个参数来存储我的用户数量

Java HashMap - How to Create third parameters to store my user amount

我正在学习如何使用哈希图。我正在尝试构建一个可以存储用户初始金额的 ATM 程序,以便在我想要存款或取款或查看余额时,我可以这样做。下面是我的代码。

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

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");

        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) {
                System.out.println("Wrong Card Number or Pin Number");
                System.out.println("Try Again");
            } else {
                System.out.println("Congratulations on logging in");
                Scanner question = new Scanner(System.in);
                System.out.println("Press 1 to Withdraw");
                System.out.println("Press 2 to Deposit");
                System.out.println("Press 3 to Check Amount");
                String operation = question.next();
                switch(operation) {
                    case "1":
                        System.out.println("How much would you like to withdraw");
                        break;
                    case "2":
                        System.out.println("How much would like to deposit?");
                        break;
                    case "3":
                        System.out.println("Here is your total amount in your bank");
                        break;
                    default:
                        System.out.println("Press 4 to exit");
                }
            }
        }

    }
}

我的问题是如何在我的用户的 ATM 中存储金额?我尝试在hashmap中添加另一个参数,但它只能接受2个参数。

一种方法是创建另一个 class:

class Account {
   private String accountNumber;
   private String pin;
   private String accountOwner;
   private long balance;

等等。 [1]

所以,你可以 Map <String, Account> .

Account account = map.get(card);
String accountNum = account.getNum ();
String pin = account.getPin ();

[1] 卡上的号码通常不会与帐号相同。这样,万一卡被盗了,不用换账号就可以注销卡了。

一个键不能对应多个值。但是,您可以做的是拥有一个嵌套的 Hashmap。在该地图中,您可以有更多的用户详细信息,例如用户名、用户地址、用户余额等。

Map<String, HashMap<String,String>> map = new HashMap<>();
    map.put("123456789" , new HashMap<>());
    map.put("987654321" , new HashMap<>());
    map.get("123456789").put("pin number" , "123456");
    map.get("123456789").put("phone number" , "0000000000");
    map.get("123456789").put("name" , "xyz");
    map.get("123456789").put("balance" , "20000");
    map.get("987654321").put("pin number" , "654321");
    map.get("987654321").put("phone number" , "1111111111");
    map.get("987654321").put("name" , "zyx");
    map.get("987654321").put("balance" , "10000");

所以地图看起来像这样 ->

{123456789 = { pin number = 123456, balance = 20000 , name = xyz , phone number = 0000000000} , 987654321 = { pin number = 654321 , balance = 10000 , name = zyx, phone 数字 = 1111111111}}

现在,您可以为每个帐号存储多种类型的值。 获取对应账号使用的值,

 String actualPin = map.get(card).get("pin number");

map.get(card)会return给你这张卡账号对应的地图。在该地图中,您可以通过该地图中的 String 键获取所需的所有值。 希望这有帮助。