创建了一个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,然后将其用作方法调用的对象名称。
我该怎么做?或者有更好的方法吗?
答案 0 :(得分:7)
使用Map
存储钱包。例如:
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);
请注意,对象没有名称 - 变量具有名称。对象不是变量;变量是对象的引用。您可以拥有多个引用同一对象的变量。
答案 1 :(得分: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.
答案 2 :(得分: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
,而不是将人物与钱包联系起来。正确的选择取决于您的整体应用目标。为查找目的设置地图可能更有效,但将钱包存储在人员中可能更合乎逻辑,尤其是如果钱包不能同时由两个人拥有。
答案 3 :(得分:0)
您可以创建哈希映射
HashMap<String,Wallet> hm=new HashMap<String,Wallet>();
hm.put("adams",adamsWallet);
...
然后
Wallet temp=hm.get("adams");
会返回相应的对象