题目描述
超市找零钱;
输入:
36.5 50
输出:
13.5 10:1;2:1;1:1;0.5:1;
输入说明:
36.5是消费金额,50是实际支付,
输出中13…5是找零金额,10是10元,:后边是张数,中间用;相隔。
代码
import java.text.DecimalFormat;
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// 输入
Scanner sc = new Scanner(System.in);
String in=sc.nextLine();
// 转化为double类型
String[] s = in.split(" ");
double[] d=new double[s.length];
for(int m=0;m<s.length;m++){
d[m]=Double.parseDouble(s[m]);
}
// 取零钱
double ling=d[1]-d[0];
int[] money = money(ling);
// System.out.println(Arrays.toString(money));
double[] arr3={0.1,0.2,0.5,1,2,5,10,50};
// 打印操作
DecimalFormat df1= new DecimalFormat("#");
DecimalFormat df = new DecimalFormat("#.0");
StringBuffer sb = new StringBuffer();
double[] temp=new double[8];
for(int j=7;j>=0;j--){
temp[j]=arr3[j]*money[j];
if(temp[j]!=0){
if (arr3[j]>0.5){
sb.append(df1.format(arr3[j])+":"+money[j]+";");
}else {
sb.append(arr3[j]+":"+money[j]+";");
}
}
}
System.out.println(df.format(ling)+" "+sb.toString());
}
// 取零算法
public static int[] money(double num){
double[] arr={0.1,0.2,0.5,1,2,5,10,50};
int[] arr2=new int[8];
for (int i=arr.length-1;i>=0;i--){
arr2[i]= (int) Math.floor(num/arr[i]);
num=num%arr[i];
if(num==0){
break;
}
}
return arr2;
}
}