【发布时间】:2020-12-08 11:26:19
【问题描述】:
我正在开发电子钱包,并从基础开始。我将 Penny 对象添加到存储钱的 HashSet 中。我将容量初始化为 5,然后从一个完整的钱包开始。
当尝试花费一分钱时,返回 null(如预期的那样),但是当调用 moneyCheck() 方法时,仍然有 5 个硬币。
我不知道该怎么做,因为我正在尝试使用 .remove() 方法删除 Penny,并且对象没有从 HashSet 中删除。
import java.util.HashSet;
public class Wallet{
private HashSet<Penny> walletPenny;
public Wallet(){
int walletCapacity = 5;
walletPenny = new HashSet<>();
int counter = 0;
while (counter < pocketCapacity){
pocketPenny.add(new Penny());
counter++;
}
}
public Penny removePenny(){
Penny spentPenny = null;
if (walletPenny.isEmpty()){
System.out.print("No more pennies!\n");
return spentPenny;
}
else {
pocketPenny.remove(spentPenny);
System.out.println(("Spent penny!"));
}
return spentPenny;
}
public int moneyCheck(){
System.out.print("Money remaining: " + walletPenny.size() + "\n");
return walletPenny.size();
}
}
【问题讨论】:
-
在你的
removePenny()方法中,spendPenny 永远不会被初始化,它总是为空的。事实上你的代码不会编译。 -
请注意,您的模型不是很健全。一方面,您使用 SET 来收集便士物品,另一方面,您知道钱对应于该集合中的条目数。这样做真的没有什么意义。在您的情况下,您的“钱包”可能只包含一个 int 计数器值!便士都是一样的,还是你真钱包里的便士分不清?不,您只关心它们的总数。