java 阿拉伯数字转中文_阿拉伯数字和中文大写的相互转换

importjava.io.BufferedReader;importjava.io.IOException;importjava.io.InputStreamReader;importjava.util.Stack;importjava.util.regex.Matcher;importjava.util.regex.Pattern;publicclassArabToChinese {publicStackstack;publicArabToChinese(){

stack=newStack();

}publicvoidpushToStack(Stackstack,charc){switch(c){case'0':

stack.push("零");break;case'1':

stack.push("壹");break;case'2':

stack.push("贰");break;case'3':

stack.push("叁");break;case'4':

stack.push("肆");break;case'5':

stack.push("伍");break;case'6':

stack.push("陆");break;case'7':

stack.push("柒");break;case'8':

stack.push("捌");break;case'9':

stack.push("玖");break;

}

}publicvoidpushToStack_(Stackstack,String s){intdigit1=5;intdigit2=9;intdigit3=1;for(inti=s.length()-1,j=0,k=0;i>=0;i--){charc=s.charAt(i);

j++;

k++;if(k==2){ stack.push("拾");

}elseif(k==3){

stack.push("佰");

}elseif(k==4){

stack.push("仟");

k=0;

}if(j==digit1){

stack.push("萬");

digit1+=8;

}if(j==digit2){

stack.push("亿");

digit2+=8;

}if(j==digit3&&c=='0') {

digit3+=4;continue;

}elsepushToStack(stack,c);

}

}publicString popToString(Stackstack){

String s="";

StringBuffer buffer=newStringBuffer();while(stack.empty()==false){

buffer.append((String)stack.pop());

}

s=buffer.toString();

s=s.replaceAll("零仟","零");

s=s.replaceAll("零佰","零");

s=s.replaceAll("零拾","零");

s=s.replaceAll("[零]+","零");

s=s.replaceAll("零萬","萬");

s=s.replaceAll("零亿","亿");

s=s.replace("零角","");

s=s.replace("零分","");returns;

}publicstaticvoidmain(String args[])throwsIOException{booleanavailable=false;

String s="";

String s1="";

System.out.print("请输入一个数字:");while(!available){

BufferedReader buffer;

buffer=newBufferedReader(newInputStreamReader(System.in));

s=buffer.readLine();

Pattern pattern=Pattern.compile("^[^0][0-9]+(.[0-9]{1,2})$");

Matcher matcher=pattern.matcher(s);booleanisMatched=matcher.find();if(isMatched==true){

available=true;

}elseSystem.out.println("你输入的数字有错误,请重新输入:");

}

ArabToChinese atc=newArabToChinese();intindex=s.indexOf('.');if(index!=-1){

s1=s.substring(index+1);

s=s.substring(0,index);

atc.pushToStack_(atc.stack, s);

s=atc.popToString(atc.stack)+"圆";if(s1.length()==1){

s1=s1+"0";

}for(inti=1,j=0;i>=0;i--){charc=s1.charAt(i);

j++;if(j==1){

atc.stack.push("分");

}if(j==2){

atc.stack.push("角");

}

atc.pushToStack(atc.stack,c);

}

s1=atc.popToString(atc.stack);

System.out.println("转换后的金钱数字为:"+s+s1);

}else{atc.pushToStack_(atc.stack,s);

s=atc.popToString(atc.stack)+"圆";

s=s.replace("零圆","圆");

System.out.println("转换后的金钱数字为:"+s);

}

}

}

java codepublicclassChineseToArabDigit {publicstaticvoidmain(String args[]){longnum_Buffer=0;longnum_add=0;longnum_mutiply=0;longresult_yi=0;longresult_wan=0;charc1='圆';

String s="壹亿亿圆";//String s="叁仟柒佰贰拾壹萬贰仟叁佰柒拾壹亿捌仟贰佰柒拾叁萬壹仟贰佰捌拾壹圆";intindex=s.indexOf('圆');

s=s.substring(0,index);for(inti=0;i

c1=s.charAt(i+1);

}switch(c){case'零':

num_Buffer=0;break;case'壹':

num_Buffer=1;if(c1=='萬'||c1=='亿'||i==s.length()-1){

num_add+=1;

}break;case'贰':

num_Buffer=2;if(c1=='萬'||c1=='亿'||i==s.length()-1){

num_add+=2;

}break;case'叁':

num_Buffer=3;if(c1=='萬'||c1=='亿'||i==s.length()-1){

num_add+=3;

}break;case'肆':

num_Buffer=4;if(c1=='萬'||c1=='亿'||i==s.length()-1){

num_add+=4;

}break;case'伍':

num_Buffer=5;if(c1=='萬'||c1=='亿'||i==s.length()-1){

num_add+=5;

}break;case'陆':

num_Buffer=6;if(c1=='萬'||c1=='亿'||i==s.length()-1){

num_add+=6;

}break;case'柒':

num_Buffer=7;if(c1=='萬'||c1=='亿'||i==s.length()-1){

num_add+=7;

}break;case'捌':

num_Buffer=8;if(c1=='萬'||c1=='亿'||i==s.length()-1){

num_add+=8;

}break;case'玖':

num_Buffer=9;if(c1=='萬'||c1=='亿'||i==s.length()-1){

num_add+=9;

}break;/**************************************/case'拾':

num_add+=10*num_Buffer;break;case'佰':

num_add+=100*num_Buffer;break;case'仟':

num_add+=1000*num_Buffer;break;/****************************************/case'萬':if(index_lastyi!=-1&&i

num_mutiply=num_add*10000;

}elseif(index_lastyi==-1||i>index_lastyi){

result_wan=num_add*10000;

}

num_add=0;break;case'亿':

num_mutiply=(num_mutiply+num_add)*100000000;

result_yi=num_mutiply;

num_add=0;break;

}

}

System.out.println(result_yi+result_wan+num_add);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是阿拉伯数字转换中文大写数字的代码: ```python def num2cn(num): # 中文大写数字 cn_num = { '0': '零', '1': '壹', '2': '贰', '3': '叁', '4': '肆', '5': '伍', '6': '陆', '7': '柒', '8': '捌', '9': '玖' } # 中文数字单位 cn_unit = ['', '拾', '佰', '仟', '万', '亿'] # 将数字转换为字符串并反 num_str = str(num)[::-1] # 记录是否出现过非零数字 has_value = False # 记录是否需要添加单位 need_unit = False # 记录上一个数字是否为零 prev_zero = False # 中文大写数字字符串 cn_str = '' # 遍历数字字符串 for i in range(len(num_str)): # 当前数字 n = num_str[i] # 当前单位 unit = cn_unit[i] # 如果当前数字为零 if n == '0': # 如果之前没有出现过非零数字,不需要将零添加到字符串中 if not has_value: continue # 如果之前出现过非零数字,并且上一个数字不是零,需要将零添加到字符串中 elif not prev_zero: cn_str += cn_num[n] prev_zero = True # 如果当前数字不为零 else: # 添加单位 if need_unit: cn_str += unit # 添加数字 cn_str += cn_num[n] # 标记出现过非零数字 has_value = True # 标记当前数字不是零 prev_zero = False # 标记需要添加单位 need_unit = True # 如果当前数字已经是最后一位,并且需要添加单位,添加“元”单位 if i == len(num_str) - 1 and need_unit: cn_str += '元' # 将字符串反并返回 return cn_str[::-1] ``` 使用示例: ```python num = 123456789 cn_num = num2cn(num) print(cn_num) # 输出:壹亿贰仟叁佰肆拾伍万陆仟柒佰捌十九元 ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值