编辑代码

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Coin[] coins = {
            new Coin("二角五分硬币", 25),
            new Coin("一角硬币", 10),
            new Coin("五分硬币", 5),
            new Coin("一分硬币", 1)
        };
        LinkedList<Coin> coinMaking = makeChange(42, coins);
        System.out.println("用如下硬币找零42美分:");
        for (Coin coin : coinMaking) {
            System.out.println(coin.name + " " + coin.count);
        }
	}
    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) {
                 return Double.compare(right.value, left.value);
             }
         }); 

         //从高到低依次取出硬币
         int leftChange = change;
        for (Coin coin : coins) {
            if (leftChange >= coin.value) {
                int coinNeed = (int) (leftChange / coin.value);
                leftChange -= coinNeed * coin.value;
            
                coinMaking.add(new Coin(coin.name, coin.value, coinNeed));
            } else {
                continue;
            }
        }

         return coinMaking;
    }
}

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;
    }
}