Java/android 金额 数字转成大写汉子

今天翻看自己的代码,发现了自己写的金额数字转成大写的代码,当然我也是在别人的基础上修改的,当时从网上copy了一份代码,发现能用,但是有很多bug,然后自己在别人的基础上修改了一番,满足了自己的应用!现在粘贴出来,提供给大家,也为自己以后找着方便!

我就直接贴代码了,注释都很清楚!

public class MoneyFormat {
private static final char[] UNIT={'亿','拾','佰','仟','万','拾','佰','仟'};
private static final char[] CHAINIESFIGURE2={'零','壹','贰','叁','肆','伍','陆','柒','捌','玖'};


//整数部分的转换
public static String toChineseCharI(String intString)throws NumberFormatException{

//用来存放转换后的大写数字,因为是StringBuffer类型,所以顺便把没有转换
//的数字倒序排列一下,省一个变量.
StringBuffer ChineseCharI=new StringBuffer(intString);
//倒序的数字,便于同单位合并
String rintString=ChineseCharI.reverse().toString();
//清空一下
ChineseCharI.delete(0,ChineseCharI.length());
//单位索引
int unitIndex=0;
//数字长度
int intStringLen=intString.length();
//一位由字符转换的数字
int intStringnumber=0;
//补0
boolean addZero=false;
boolean flagZero = false;
for(int i=0;i<intStringLen;i++){
//按单位长度循环索引
unitIndex=i%UNIT.length;

//异常检查
if(!Character.isDigit(rintString.charAt(i))) {
throw new NumberFormatException("数字中含有非法字符");
}
intStringnumber=Character.digit(rintString.charAt(i),10);

//如果当前位是0,开启补0继续循环直到不是0的位
if(intStringnumber==0){
addZero=true;
if(i!=0&&i%4==0){
if(addZero&&ChineseCharI.length()!=0){
ChineseCharI.append(CHAINIESFIGURE2[0]);
addZero = false;
}
flagZero = true;
ChineseCharI.append(UNIT[unitIndex]);
}
}else{
//若当前位不是第一位且补0开启
if(addZero&&ChineseCharI.length()!=0&&!flagZero){
ChineseCharI.append(CHAINIESFIGURE2[0]);
}
flagZero = false;
//插入单位
//个位数后面不需 要单位
if(i>0){
System.out.println(i);
ChineseCharI.append(UNIT[unitIndex]);
}

//插入大写数字
ChineseCharI.append(CHAINIESFIGURE2[intStringnumber]);
//补0关闭
addZero=false;
}
}

//异常处理
if(ChineseCharI.length()==0){
return "零";
}
return ChineseCharI.reverse().toString()+"圆整";

}
}

当然,上述代码也可能存在我没发现的bug,希望大家遇到后及时交流!共同进步!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值