很简单,有两个集合集(list)和tagli;滚动列表,当 resto> 列表中的项目时,拾取该项目并减去该项目,直到 resto 等于 0。
public static ArrayList<Double> getTagli(Double resto) {
Set list = Cassa.getSoldi().keySet(); // 10, 5, 2, 1, 0.5, 0.2, 0.1
Iterator iter = list.iterator();
Double divisore = (Double) iter.next();
while (iter.hasNext() && resto > 0) {
resto = Cassa.divisioniSuccessive(resto, divisore);
if (resto<divisore)
divisore = (Double) iter.next();
}
return tagli;
}
private static Double divisioniSuccessive(Double dividendo, Double divisore) {
if (dividendo >= divisore) {
tagli.add(divisore);
dividendo = (Double) dividendo - (Double) divisore;
}
return dividendo;
}