java小练习:钱数汉字大写的转变(错误版本,孜待改正,大多数像我一样的初学者能看明白)

该代码段展示了一个Java程序,用于将输入的数字转换为大写的中文金额表示。程序首先将数字转换为字符串,然后用正则表达式替换各个数字和分隔符,最后进行简化处理,去除多余的“零”字符。然而,代码中存在未处理的边界情况,例如“零零”并未正确替换为“零”。

 问题:a2=a2.replaceAll("零零零", " 零");

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

为什么不能实现replace替换

希望大佬检查一下

这里也记录了了自己的思路过程(见谅)

package passage2;
import java.util.Scanner;
import java.text.DecimalFormat;
public class fantihua {
	public static String Replace(String money) {
		money=money.replaceAll("1", "壹");
		money=money.replaceAll("2", "贰");
		money=money.replaceAll("3", "叁");
		money=money.replaceAll("4", "肆");
		money=money.replaceAll("5", "伍");
		money=money.replaceAll("6", "陆");
		money=money.replaceAll("7", "柒");
		money=money.replaceAll("8", "捌");
		money=money.replaceAll("9", "玖");
		money=money.replaceAll("0", "零");
		return money;	
	}
	public static void fantihua(double Money) {
		Money=Money*100;
		int money=(int) Money;
		System.out.println(money);//化为角
//		String MONEY1=Integer.toString(money*100);
//		DecimalFormat df=new DecimalFormat("####,####");
//		String MONEY=df.format(money*100);
//		System.out.println(MONEY);//四个四个一组
//		String []a=MONEY.split(",");
//		int i=((MONEY1.length())/4);
//		for(;i>=0;i--) {
//		System.out.println(a[i]);
//		}
		String MONEY=String.valueOf(money);
		int[]x=new int[MONEY.length()];
		String[]y=new String[MONEY.length()];
		int length=MONEY.length();
		for(int i=0;i<MONEY.length();i++) {
			x[MONEY.length()-i-1]=Integer.parseInt(String.valueOf(MONEY.charAt(i)));
			y[MONEY.length()-i-1]=String.valueOf(MONEY.charAt(i));
		}
		System.out.println(x[1]);
		String big[]= {"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
		String mian[]= {"分","角","元","拾","佰","仟","万","拾","佰","仟","亿","十","佰","仟"};
		String a1[]=new String[MONEY.length()];
		String lingfen="零分";
		String lingjiao="零角";
		String lingshi="零拾";
		String lingbai="零佰";
		String lingqian="零仟";
		String lingwan="零万";
		String lingyi="零亿";
		String fen="分";
		for(int i1=length-1;i1>=0;i1--) {
			a1[i1]=y[i1]+mian[i1];
			a1[i1]=Replace(a1[i1]);
//			if(a1[i1]==lingfen) {
//			}
//			if(a1[i1]==lingjiao) {
//				
//			}
//			if(a1[i1]==lingshi) {
//				
//			}
//			if(a1[i1]==lingbai) {
//				
//			}
//			if(a1[i1]==lingqian) {
//				
//			}
//			if(a1[i1]==lingwan) {
//				System.out.print("万"); 
//			}
//			if(a1[i1]==lingyi) {
//				System.out.print("亿"); 
//			}
//			else {
//				System.out.print(a1[i1]);
//			}
		
			String a2=""+a1[i1];
		    a2=a2.replaceAll("零分", "");
		    a2=a2.replaceAll("零角", "");
		    a2=a2.replaceAll("零元", "元");
		    a2=a2.replaceAll("零拾", "零");
		    a2=a2.replaceAll("零佰", "零");
		    a2=a2.replaceAll("零仟", "零");
		    a2=a2.replaceAll("零万", "万");
		    a2=a2.replaceAll("零亿", "亿");
		    a2=a2.replaceAll("零零零", " 零");
            a2=a2.replaceAll("零零", " 零");
		    if(a2.endsWith("元")==true) {
		    	a2=a2+"整";
		    }
			System.out.print(a2);
			
			
		}   
		
		
	}

	public static void main(String[] args) {
		System.out.println("你的要存的钱数:");
		Scanner scanner=new Scanner(System.in);
		double Money=scanner.nextDouble();
		fantihua(Money);
		
		
		// TODO 自动生成的方法存根

	}

}

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小郭同学忒骚了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值