我对Java相当陌生,在这个练习中我遇到了一些困难。我必须创建一个“Piggy Bank”,用户可以在其中存入不同价值和货币(欧元、多拉、雷亚尔等)的硬币,并在之后将其移除,然后将总价值转换为所需的货币。建议我们为Coin创建一个抽象超类,为Euro、Dolar和Real创建三个子类。我可以在没有外壳的情况下走得很远,但我不知道如何移除,例如,银行中的任何10美元硬币,而让其他10美元或10欧元硬币保持不变,就像一个扫描数组的Iterator,当他满足条件(dollar,value 10)时,他移除该对象并停止运行。我正在创建一个数组列表,并通过以下代码块在其上放置硬币:
ArrayList<Coin> list = new ArrayList<Coin>();
double euroCoinValue = scan.nextDouble();
list.add(new Euro(euroCoinValue));
double dollarCoinValue = scan.nextDouble();
list.add(new Dollar(dollarCoinValue));
这是我对你想做什么的理解。如果我错过了你的实际问题,请告诉我。
import java.math.BigDecimal;
import java.util.List;
import java.util.ArrayList;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
Main main = new Main();
main.testRemoveOneOfTheDollars();
main.testRemoveOneReal();
main.testRemoveTwoReal();
}
private PiggyBank setup() {
PiggyBank piggyBank = new PiggyBank();
piggyBank.add(new Euro(BigDecimal.valueOf(10L)));
piggyBank.add(new Dollar(BigDecimal.valueOf(10L)));
piggyBank.add(new Euro(BigDecimal.valueOf(10L)));
piggyBank.add(new Dollar(BigDecimal.valueOf(10L)));
piggyBank.add(new Real(BigDecimal.valueOf(10L)));
return piggyBank;
}
public void testRemoveOneOfTheDollars() {
PiggyBank piggyBank = setup();
piggyBank.printCurrentState();
piggyBank.remove("Main$Dollar");
}
public void testRemoveOneReal() {
PiggyBank piggyBank = setup();
piggyBank.printCurrentState();
piggyBank.remove("Main$Real");
piggyBank.printCurrentState();
}
public void testRemoveTwoReal() {
PiggyBank piggyBank = setup();
piggyBank.printCurrentState();
piggyBank.remove("Main$Real");
piggyBank.printCurrentState();
try {
piggyBank.remove("Main$Real");
} catch (IllegalStateException e) {
System.out.println(e.getMessage());
}
piggyBank.printCurrentState();
}
class PiggyBank {
private List<Coin> coins;
public PiggyBank() {
coins = new ArrayList<Coin>();
}
public void add(Coin newCoin) {
System.out.println("Adding coin [" + newCoin + "]");
coins.add(newCoin);
}
public Coin remove(String coinType) {
System.out.println("Removing coin of type [" + coinType + "]");
int numOfCoins = coins.size();
for (int i = 0; i < numOfCoins; i++) {
Coin toReturn = coins.get(i);
if (toReturn.getClass().getName().equalsIgnoreCase(coinType)) {
coins.remove(i);
System.out.println("Removed coin [" + toReturn + "]");
return toReturn;
}
}
throw new IllegalStateException("No Coins of type [" + coinType + "] exist in PiggyBank");
}
public void printCurrentState() {
List<String> coinStrs = coins.stream().map(Coin::toString).collect(Collectors.toList());
System.out.println("PiggyBank Current State [" + coinStrs + "]");
}
}
abstract class Coin {
protected BigDecimal value;
public Coin(BigDecimal value) {
this.value = value;
}
public BigDecimal getValue() {
return value;
}
public String toString() {
return "value: [" + getValue() + "], type [" + this.getClass().getName() + "]\n";
}
}
class Euro extends Coin {
public Euro(BigDecimal value) {
super(value);
}
}
class Dollar extends Coin {
public Dollar(BigDecimal value) {
super(value);
}
}
class Real extends Coin {
public Real(BigDecimal value) {
super(value);
}
}
}
问题内容: 文件: 有没有办法从数组中提取特定对象?IE如何从项数组中提取ID为23的整个项对象。 我努力了: 但是我很确定我没有正确使用’pull’。据我了解,pull将从数组中拉出字段,而不是对象。 关于如何将整个对象从数组中拉出的任何想法。 另外,我尝试在mongoose / nodejs中执行此操作,也不确定这种类型的内容是否在mongoose API中,但我找不到它。 问题答案: 尝试.
问题内容: 我需要从满足条件的数组中删除对象,我可以根据条件更新数组的对象,如下所示: 这正在工作 为了删除我正在这样做 但这不起作用,并给出此错误, ElasticsearchIllegalArgumentException [无法执行脚本]; 嵌套:ConcurrentModificationException; 错误:ElasticsearchIllegalArgumentException
现在我有了新阵列 现在,现有的_array和新的_array都有名称值“b”,我希望它从新数组中移除
问题内容: 在我的应用程序中,选择单元格时在数组中添加了一个对象,重新选择单元格时取消选择并删除了对象。我使用了该代码,但给了我错误。 它给了我2像这样的错误: 问题答案: 雨燕等同的是: 如果对象是唯一的 。完全没有必要强制使用 该API 也可以使用,但这会导致不必要的隐式桥强制转换为。 如果同一对象多次出现,请使用。但是,在像数据源数组这样的情况下,将索引与特定对象相关联的情况是可取的,因为它
假设对象数组如下: 如果标签和颜色相同,则为重复条目。在这种情况下,id=1和id=5的对象是重复的。 如何筛选此阵列并删除重复项? 我知道一些解决方案,在这些解决方案中,您可以使用以下内容对一个键进行过滤: 但是多个键呢? 根据评论中的要求,以下是预期结果:
问题内容: 如何从数组中删除对象?我想删除,其中包括名称的对象从。例如: 我要实现: 问题答案: 您可以使用多种方法从数组中删除项目: 如果要删除position处的元素,请使用: 要么 您可以使用或结合使用参见MDN从数组中删除一个或多个元素,例如