求帮忙 java 编写程序,急急急!!!计算机考试

我国现行流通的人民币共有13种面额,分别是100元。50元。20元。10yuan。5yuan。2元。1元。五角。两角,一角五分两分。一分
当你支付100元人民币用于购买低于100元的商品(不含角分)时。要求找回尽可能少的纸币,请编写程序寻找一个解决方案
大神门为了高一学妹的计算机成绩,,,摆脱了,,,,急急急急啊。、、、

import java.math.BigDecimal;
public class Demo {
public static Double[] types = { 0.01, 0.02, 0.05, 0.1, 0.2, 0.5, 1.0, 2.0, 5.0, 10.0, 20.0, 50.0, 100.0 };// 人民币币种

public static void main(String[] args) {
Double toMoney = 100.0;// 用于支付的100元
Double tpendMoney = 81.99;// 实际花费81.99元
Double over = DoubleFormat(toMoney - tpendMoney);
System.out.println("找零" + over);
String calc = calc(over);
System.out.println(calc);
}

public static String calc(Double over) {
String resultString = "";
for (int i = 0; i < types.length; i++) {
if (types[i] >= over) {
if (types[i].equals(over)) {
return types[i].toString();
} else {
resultString += types[i - 1];
resultString += "\t" + calc(DoubleFormat(over - types[i - 1]));
break;
}
}
}
return resultString;
}

public static Double DoubleFormat(Double d) {
BigDecimal bd = new BigDecimal(d);
return bd.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
}
}

结果:

找零18.01

面值:10.0 ,  5.0 ,  2.0 ,  1.0,  0.01

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-05-27
public class Buy {

int money100 = 100;
int money50 = 50;
int money20 = 20;
int money10 = 10;
int money5 = 5;
int money2 = 2;
int money1 = 1;

int leftmoney = 0;
public String pay(int paymoney,int price)
{
leftmoney = paymoney - price;

if(leftmoney<100&&leftmoney>50)
{
return "找钱:"+money50 +"元和"+ (paymoney-50-price)+"元";
}

if(leftmoney==50)
{
return "找钱:"+money50 +"元";
}

if(leftmoney<50&&leftmoney>20)
{
return "找钱:"+money20 +"元和"+ (paymoney-20-price)+"元";
}

if(leftmoney==20)
{
return "找钱:"+money20 +"元";
}

if(leftmoney<20&&leftmoney>10)
{
return "找钱:"+money10 +"元和"+ (paymoney-10-price)+"元";
}

if(leftmoney==10)
{
return "找钱:"+money10 +"元";
}

if(leftmoney<10&&leftmoney>5)
{
return "找钱:"+money5 +"元和"+ (paymoney-5-price)+"元";
}

if(leftmoney==5)
{
return "找钱:"+money5 +"元";
}

if(leftmoney<5&&leftmoney>2)
{
return "找钱:"+money2 +"元和"+ (paymoney-2-price)+"元";
}

if(leftmoney==2)
{
return "找钱:"+money2 +"元";
}

if(leftmoney==1)
{
return "找钱:"+money1 +"元";
}

return "找钱:0元";
}

public static void main(String[] args) {

System.out.println(new Buy().pay(30, 30));
}

}本回答被网友采纳
第2个回答  2013-05-27

采用递归方式

package com.isoftstone.baidu;

import java.util.Scanner;


public class MoneyDemo {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while(scanner.hasNext()) {
            int money = scanner.nextInt();
            if(money == 0)break;// 0元退出
            if(money >= 100)continue;// 大于100元不处理
            System.out.println("找零:" + (100 - money));
            homing(100 - money);// 找零
        }
    }
    
    /**
     * 找零
     * @param money
     */
    public static void homing(int money) {
        if(money < 100 && money >= 50) {
            System.out.print("50 ");
            homing(money - 50);
        } else if(money < 50 && money >= 20) {
            System.out.print("20 ");
            homing(money - 20);
        } else if(money < 20 && money >= 10) {
            System.out.print("10 ");
            homing(money - 10);
        } else if(money < 10 && money >= 5) {
            System.out.print("5 ");
            homing(money - 5);
        } else if(money < 5 && money >= 2) {
            System.out.print("2 ");
            homing(money - 2);
        } else if(money < 2 && money >= 1) {
            System.out.print("1 ");
            homing(money - 1);
        } else if(money == 0) {
            System.out.print("找零完毕!\n");
        } else {
            System.out.println("不在处理范围");
        }
    }

}

第3个回答  2013-05-27

看看这个

public class Test {

public static void main(String[] args) { 
Test m = new Test(); 
int cost=55; 
int cath=100; 
int ralch=cath-cost; 
System.out.println("一百元:"+m.getMonet(ralch)); 
//用支付完100元以后的结果在计算50的应该找几张
ralch=ralch%100; 
System.out.println("50的:"+m.getfifty(ralch)); 
ralch=ralch%50;
System.out.println("20元的找几张:"+m.getSecond(ralch));
ralch=ralch%20;
System.out.println("10元的找几张:"+m.getTen(ralch));
ralch=ralch%10;
System.out.println("5元的找几张:"+m.getfive(ralch));
ralch=ralch%5;
System.out.println("2元的找几张:"+m.getTwo(ralch));
ralch=ralch%2;
System.out.println("1元的找几张:"+m.getOne(ralch));

public int getMonet(int s) { 
return s / 100;

public int getfifty(int f) { 
return f / 50; 

public int getSecond(int g) { 
return g / 20; 
} public int getTen(int t) { 
return t / 10; 

public int getfive(int v) { 
return v / 5; 

public int getTwo(int w) { 
return w / 2; 

public int getOne(int o){
return o/1; 
}



}

第4个回答  2013-05-27
没明白这题啥意思,尽可能少的纸币是指的每种纸币都包括吗?
相似回答