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