Java 如何允许数组中的多个用户单独访问变量?
我知道标题很混乱,所以我会在这里澄清 下面是我拼凑的一个极其简单的银行类,它采用用户名和余额,并具有存款和取款类Java 如何允许数组中的多个用户单独访问变量?,java,Java,我知道标题很混乱,所以我会在这里澄清 下面是我拼凑的一个极其简单的银行类,它采用用户名和余额,并具有存款和取款类 public class Bank { String user; int balance = 0; int pin; public void setup (String n,int p) { user = n; pin = p; } public void withdraw (int amount) { balance -= amount; } pub
public class Bank {
String user;
int balance = 0;
int pin;
public void setup (String n,int p)
{
user = n;
pin = p;
}
public void withdraw (int amount)
{
balance -= amount;
}
public void deposit (int amount)
{
balance += amount;
}
public String toString ()
{
return String.format("User: %s\nBalance: %s",user,balance);
}
}
现在。这是我的担忧。下面是我使用Bank类制作的另一个简单类。我尝试过哈希映射和数组,我确信我只是缺少一个基本原则。这不是一门课,我只想知道如何做到以下几点:
我希望能够创建不同的用户,我确信我必须像使用HashMap或ArrayList一样使用,并且每个用户都有单独的余额变量访问权限,因此当一个人,比如说pin为1234的X个人提取资金时,只有他们的资金被提取
我知道我可以使用HashMap并像
HashMap <String, Integer> HM = new HashMap <String, Integer> ();
HM.put("User",0)
你将如何做到这一点
再说一遍。我知道我可以用不同的方法来完成,但我很好奇是否可以用这种方法来完成。首先,为name和pin创建一个getter方法 您可以创建银行对象的ArrayList,并在用户每次创建帐户时将银行对象添加到ArrayList中 然后,当用户想要取款时,您可以询问他们姓名和pin,然后循环arraylist,同时比较arraylist中银行对象的pin和姓名以及刚刚输入的人名和pin
如果找到了对象,您可以询问用户要提取多少钱,然后调用widraw方法。您使用的面向对象设计对于您试图实现的目标不是很好。如果您想访问银行的每个客户机,您应该创建一个客户机类或帐户,其getter和setter如下所示: 还有,我把你的整数改成了双精度 现在,您可以从void中创建任何特定数据结构中所需的所有客户端。我将给出一个使用HashMap的示例
之后,您可以按照自己喜欢访问的方式操作数据结构。我希望这就是您要找的HashMap?我认为think you Call Bank实际上是银行中的一个帐户。您需要创建具有所有银行属性的类用户,然后将列表添加到银行。关于获取者,我计划,但我只是匆匆忙忙地完成了此操作,以便我可以问我的问题。我觉得我试过了,但失败了。我将使用此方法再试一次。双倍不能与货币很好地混合。整数也不是很好,但至少它们没有损耗。BigDecimal,或者更好的库,是在应用程序中表示货币的正确方法。对于一个玩具应用程序,你可能不需要太过火,但是浮点精度是绝对不受欢迎的。我想这没有错,但很不寻常。使用this.variable=variable将局部变量分配给同名的实例变量。由于存在不兼容的类型,因此大十进制类型可能会损坏。请将其更改为double。这是一个建议。但对于练习来说,加倍就足够了。不过,我会改变我的例子。以前,一切都很有意义。“安全性”方面存在问题,因为用户只需键入此人的姓名即可编辑余额。不过,它确实起了作用。现在我必须找出如何修复这些大的十进制错误。
import java.lang.reflect.Array;
import java.util.*;
public class BankDriver {
public static void main (String [] args)
{
boolean quit = false;
Bank b = new Bank ();
Scanner sc = new Scanner (System.in);
do {
System.out.println("1: Create account\2: Quit");
int input = sc.nextInt();
switch (input)
{
case 1:
b.setup("Name",1234);
System.out.println(b.toString());
break;
case 2:
quit = true;
break;
}
}while(!quit);
System.out.println("Exiting.");
}
}
public class Client{
public int pin;
public String name;
public double amount;
public Client(String name, double amount, int pin){
this.name = name;
this.amount = amount;
this.pin = pin;
}
public String getName(){
return name;
}
public int getPin(){
return pin;
}
public void changePin(int newPin){
this.pin = newPin;
}
public void withdraw (double amount)
{
this.amount -= amount;
}
public void deposit (double amount)
{
this.amount += _amount;
}
@Override
public String toString ()
{
return String.format("User: %s\nBalance: %s",this.name,this.amount);
}
}
HashMap <String, Client> HM = new HashMap <String, Client>();
HM.put("Uri D. Charles", new Client("Uri D. Charles", 100.00, 1234));
HM.put("Luis Lavieri", new Client("Luis Lavieri", 2000.00, 1234));