金币分碎银

来源:互联网 发布:易经算命 知乎 编辑:程序博客网 时间:2024/04/29 01:47
编写程序:
要求该程序能够把57美元换成面值为:20、10、5和1美元并能显示换算结果。创建执行计算并返回显示结果的单独方法。把57作为变量传递给该方法。把程序保存为Dollars.java。
b、在Dollars.java程序中,改变存储金额数值的变量值。运行程序并确认每种面值数量的计算结果是否正确
程序代码:
/**
*
*/
package com.test;

import java.util.Scanner;

/**
* @author Administrator
*
*/
public class Dollars {

    /**
    美元转换、求所有解
     */
    public static void main(String[] args) {
int money=0;
System.out.println("请输入要转换的金钱数(整数):");
Scanner sc=new Scanner(System.in);
money=sc.nextInt();
Dollars dol=new Dollars(money);
dol.transform(0);

    }
    private int[] result={0,0,0,0};
    private  int[] kind={20,10,5,1};
    private int money,m;
    public Dollars(int money){
this.money=money;
    }
    private void isRight(int total){
if(total!=money)return;
System.out.println("<---------------可爱的分割线----------------->");
for(int i=0;i<4;i++){
    System.out.println(kind[i]+"元"+result[i]+"张 ");
}
    }
    private void com(int tmp){
m=0;
for(int i=0;i<4;i++)
    m+=result[i]*kind[i];
isRight(m);
transform(tmp+1);
    }
    public void transform(int tmp){
if(tmp==4)return;
for(int i=0;i<=money/kind[tmp];i++){
    int m=money-i*kind[tmp];
    result[tmp]=i;
    com(tmp);
  
}
    }
   

}