编辑代码

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

class Main {
    public static void main(String[] args) {
         CoinTemplate coinTemplate=new CoinTemplate();
     coinTemplate.test1();
        coinTemplate.test2();
        coinTemplate.test3();
        }
}
class Coin {
    public String name;
    public double value;
    public int coinneed;

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

    Coin(Coin coin) {
        this.name = coin.name;
       this.value=coin.value;
       this.coinneed=coin.coinneed;
    }
}
class CoinTemplate {
    public static LinkedList<Coin> makechange(int change, Coin[] coins){
        LinkedList<Coin> beans = new LinkedList<Coin>(); 


        Arrays.sort(coins, new Comparator<Coin>() {
            @Override
            public int compare(Coin o1, Coin o2) {

                if(o1.value>o2.value)
                {
                    return -1;
                }
                else if(o1.value==o2.value)
                {
                    return 0;
                }
                else{
                    return 1;
                }
            }
        });

        int leftpackcapacity=change;
        for (int i = 0; i < coins.length; i++) {
            if(leftpackcapacity>=coins[i].value){
               int coinneed=(int)(leftpackcapacity/coins[i].value);
               leftpackcapacity-=coinneed*coins[i].value;
               beans.add(new Coin(coins[i].name,coins[i].value,coinneed));

            }
            else{
              continue;
            }
        }

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

        LinkedList<Coin> beans = makechange(66, coins);

        double maxValue = 0;

        System.out.println("装了如下物品:");
        for (int i = 0; i < beans.size(); ++i) {
            maxValue +=(beans.get(i).value*beans.get(i).coinneed
            ) ;
            System.out.println(beans.get(i).name + " " + beans.get(i).coinneed);
        }

        System.out.println("总价值:" + maxValue);

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

        LinkedList<Coin> beans = makechange(56, coins);

        double maxValue = 0;

        System.out.println("装了如下物品:");
        for (int i = 0; i < beans.size(); ++i) {
            maxValue +=(beans.get(i).value*beans.get(i).coinneed
            ) ;
            System.out.println(beans.get(i).name + " " + beans.get(i).coinneed);
        }

        System.out.println("总价值:" + maxValue);

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

        LinkedList<Coin> beans = makechange(36, coins);

        double maxValue = 0;

        System.out.println("装了如下物品:");
        for (int i = 0; i < beans.size(); ++i) {
            maxValue +=(beans.get(i).value*beans.get(i).coinneed
            ) ;
            System.out.println(beans.get(i).name + " " + beans.get(i).coinneed);
        }

        System.out.println("总价值:" + maxValue);

    }
}