编辑代码



import java.util.Arrays;
import java.util.Comparator;
import java.util.LinkedList;

public class MakingChange_ {
    public static LinkedList<Coin> makeChange(int change, Coin[] coins) {
        LinkedList<Coin> coinMaking = new LinkedList<Coin>(); // 记录用来找零的硬币

        //按照单价从高到低进行排序
        Arrays.sort(coins, new Comparator<Coin>() {
            public int compare(Coin left, Coin right) {

                if (left.value > right.value) {
                    return -1;
                } else if (left.value == right.value) {
                    return 0;
                } else {
                    return 1;
                }
            }
        });

        //从高到低依次取出硬币
        int leftChange = change;
        for (int i = 0; i < coins.length; ++i) {
            if (leftChange >= coins[i].value) {
                int coinNeed = (int) (leftChange / coins[i].value);
                leftChange -= coinNeed * coins[i].value;

                coinMaking.add(new Coin(coins[i].name, coins[i].value, coinNeed));
            } else {
                continue;
            }
        }

        return coinMaking;
    }







    public static void test() {
        Coin[] coins = {new Coin("二角五分硬币", 25), new Coin("一角硬币", 10), new Coin("五分硬币", 5), new Coin("一分硬币", 1)};

        LinkedList<Coin> coinMaking = makeChange(48, coins);

        System.out.println("用如下硬币找零48美分:");
        for (int i = 0; i < coinMaking.size(); ++i) {
            System.out.println(coinMaking.get(i).name + " " + coinMaking.get(i).count);
        }

    }
        public static void main(String[] args) {
        MakingChange_.test();
    }
  
}
class Coin {
    public String name;
    public double value;
    public int count;

    Coin(String itemName, double value) {
        this.name = itemName;
        this.value = value;
        this.count = 0;
    }

    Coin(String name, double value, int count) {
        this.name = name;
        this.value = value;
        this.count = count;
    }
}