package com;
import com.Human;
import com.Bank;
public class Exchange {
public static void main(String[] args) {
Human human = new Human();
Bank bank = new Bank();
bank.setName("光明银行城东支行");
int[] c =new int[] {1,2,5};
bank.setSmallChanges(c);
human.setAmount(186);
human.setName("李大伯");
int h=bank.change(human);
System.out.println(bank.getName()+"为"+human.getName()+"兑换 "+h+" 个零钱");
}
}
package com;
public class Human {
private String name;//人名,构造时注意下
public void setName(String name){
this.name =name ;
}
public String getName() {return this.name;}
private int amount=15;//兑换的金额
public void setAmount(int amount){
this.amount =amount ;
}
public int getAmount() {return this.amount;}
}
package com;
import com.Human;
import java.util.Arrays;
public class Bank {
private String name;//银行名字,构造时注意下
public void setName(String name){
this.name =name ;
}
public String getName() {return this.name;}
private int[] smallChanges; //零钱种类,任意
public void setSmallChanges(int[] smallChanges){
this.smallChanges =smallChanges;
}
public int[] getSmallChanges() {return this.smallChanges;}
public int change(Human human) {//实例化
int a=human.getAmount(); //得到零钱数量,amount
int i,c=1,b=0;
int[] z = null;
Arrays.sort(smallChanges);
for(int d=0;d<=(a-a%smallChanges[0])/smallChanges[0];d++)//从最大的开始,如果最大的用不到,则修改,从第二大的开始,一直到最小的,同时比较所有a=0时的整数b,取最小
{for(i=c;i<=smallChanges.length;i++) {
b=(a-a%smallChanges[smallChanges.length-i])/smallChanges[smallChanges.length-i]+b;
a=a%smallChanges[smallChanges.length-i];//
}
if(a!=0) {c++;}
else {z[d]=b;}}
Arrays.sort(z);
return z[0];
}
}
找不到错误原因,求大佬解答