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 键获取所需的所有值。
希望这有帮助。
我正在学习如何使用哈希图。我正在尝试构建一个可以存储用户初始金额的 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 键获取所需的所有值。 希望这有帮助。