纸币兑换java代码_把钱币大写 转为 数字的Java代码

把钱币大写 转为 数字的Java代码

import java.text.DecimalFormat;

public class Mm {

/**

* 转亿以下的

* @param str

* @return

*/

public static double b2s(String str){

str=str.replaceAll("零", "");

double sum=0;

int index=str.indexOf("亿");

if (index>0){

String temp=str.substring(0,index );

str=str.substring(index+1);

sum=sum+w(temp)*100000000;

}

index=str.indexOf("万");

if (index>0){

String temp=str.substring(0,index );

str=str.substring(index+1);

sum=sum+w(temp)*10000;

}

index=str.indexOf("元");

if (index>0){

String temp=str.substring(0,index );

str=str.substring(index+1);

sum=sum+w(temp);

}

index=str.indexOf("角");

if (index>0){

String temp=str.substring(0,index );

str=str.substring(index+1);

sum=sum+str2num(temp)*0.1;

}

index=str.indexOf("分");

if (index>0){

String temp=str.substring(0,index );

str=str.substring(index+1);

sum=sum+str2num(temp)*0.01;

}

return sum;

}

/**

* 大写转小写

* @param str

* @return

*/

public static int str2num(String str){

String[] daxie={"壹","贰","叁","肆","伍","陆","柒","捌","玖"};

int[] num={1,2,3,4,5,6,7,8,9};

for (int i = 0; i < daxie.length; i++) {

if ( str.equals( daxie[i] ) ) {

return num[i];

}

}

return 0;

}

/**

* @see 转万以下的

* @param str

* @return

*/

public static double w(String str){

double sum=0;

int index=str.indexOf("仟");

if (index>0){

String temp=str.substring(0,index );

str=str.substring(index+1);

sum=sum+str2num(temp)*1000;

}

index=str.indexOf("佰");

if (index>0){

String temp=str.substring(0,index );

str=str.substring(index+1);

sum=sum+str2num(temp)*100;

}

index=str.indexOf("拾");

if (index>0){

String temp=str.substring(0,index );

str=str.substring(index+1);

sum=sum+str2num(temp)*10;

}

if (str.length()>0) {

sum=sum+str2num(str) ;

}

return sum;

}

public static void main(String[] args) {

DecimalFormat df=new DecimalFormat();

df.setMinimumFractionDigits(2);

df.setMaximumFractionDigits(2);

System.out.println(df.format(b2s("壹仟万零伍佰壹拾玖元捌角陆分") ));

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是用Java实现动态规划求解最少纸币数的示例代码: ```java import java.util.Arrays; public class MinCoins { public static int minCoins(int[] coins, int amount) { int[] dp = new int[amount + 1]; Arrays.fill(dp, amount + 1); dp[0] = 0; for (int i = 1; i <= amount; i++) { for (int j = 0; j < coins.length; j++) { if (coins[j] <= i) { dp[i] = Math.min(dp[i], dp[i - coins[j]] + 1); } } } return dp[amount] > amount ? -1 : dp[amount]; } public static void main(String[] args) { int[] coins = {1, 5, 10, 20, 50}; int amount = 65; int minCoins = minCoins(coins, amount); System.out.println("最少需要 " + minCoins + " 张纸币"); } } ``` 在上面的代码中,我们定义了一个minCoins()方法来计算最少需要多少张纸币才能凑出指定金额。该方法接受两个参数:纸币面额数组和目标金额。我们首先初始化一个长度为amount+1的dp数组,并将其所有元素初始化为amount+1。我们将dp[0]初始化为0,因为凑出0元需要0张纸币。 接下来,我们使用两个for循环来填充dp数组。外部循环控制金额,内部循环控制纸币面额。对于每个金额i,我们遍历所有的纸币面额,并计算使用该面额所需的最少纸币数。我们使用dp[i-coins[j]] + 1来更新dp[i]的值,其中coins[j]表示当前纸币面额。 最后,我们返回dp[amount]的值,如果其大于amount,则表示无法凑出指定金额,返回-1即可。 在示例代码中,我们使用了一个包含1、5、10、20和50的纸币面额数组,并尝试凑出65元。输出结果为“最少需要 3 张纸币”,即需要一张50元、一张10元和一张5元纸币

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值