1

被赋予创建一个 Wallet 类的任务,您可以在其中创建成员并在它们之间转移资金。然后,用户可以选择谁给钱和谁收钱。以下是一些相关代码:

Wallet adamsWallet = new Wallet("Adam", 403.50);
Wallet bentsWallet = new Wallet("Bent",  873);
Wallet clarksWallet = new Wallet("Clark", 319.50);


object_name_here.transfer(other_object_name_here, 200);

因此,我希望用户例如在扫描仪中输入“adam”,然后以某种方式将“sWallet”附加到 adam,然后将其用作方法调用的对象名称。

我该怎么做,或者有更好的方法吗?

4

4 回答 4

7

使用 aMap来存放钱包。例如:

Map<String, Wallet> wallets = new HashMap<>();

wallets.put("Adam", new Wallet("Adam", 403.50));
wallets.put("Bent", new Wallet("Bent",  873));
wallets.put("Clark", new Wallet("Clark", 319.50));

您可以从地图中按名称查找钱包。

Wallet wallet1 = wallets.get("Adam");
Wallet wallet2 = wallets.get("Clark");

wallet1.transfer(wallet2, 200);

请注意,对象没有名称 - 变量有名称。对象不是变量;变量是对对象的引用。您可以有多个变量引用同一个对象。

于 2012-12-06T12:31:27.260 回答
2

您可以使用地图。

Map<String, Wallet> wallets = new HashMap<String, Wallet>();
wallets.put("Adam", new Wallet("Adam", 403.50));

但是,在这种情况下,我建议尽可能删除 Wallet 构造函数的“Adam”参数。让钱包本身独立于谁拥有它。

然后你可以得到一个这样的个人钱包:

String name = "Adam"; // this string could be read from your Scanner object.
Wallet wallet = wallets.get(name); // You can also use wallets.get("Adam") directly of course.
于 2012-12-06T12:30:47.223 回答
1

由于钱包的所有者是您系统中的一个实体,因此我会亲自给他们自己的课程。这允许更复杂的安排,例如一个人拥有多个钱包,或存储有关所有者的其他元数据。

您的示例将是:

Map<Person, Wallet> wallets = new HashMap<Person, Wallet>();

wallets.put(new Person("Adam"), new Wallet(403.50));
wallets.put(new Person("Bent"), new Wallet(873));
wallets.put(new Person("Clark"), new Wallet(319.50));

如果你.equals()在你的类中定义了一个合理的方法Person,你就可以再次找到钱包:

Wallet wallet = wallets.get(new Person("Adam"));

我还会考虑一个Person类是否可能包含一个Wallet,而不是有一个将人们链接到钱包的地图。正确的选择取决于您的整体应用目标。为查找目的使用地图可能更有效,但将钱包存储在个人内部可能更合乎逻辑,特别是如果一个钱包不能同时由两个人拥有。

于 2012-12-06T12:42:10.950 回答
0

您可以创建哈希映射

HashMap<String,Wallet> hm=new HashMap<String,Wallet>();
hm.put("adams",adamsWallet);
...

然后

   Wallet temp=hm.get("adams");

会返回你相应的对象

于 2012-12-06T12:34:36.213 回答