【分享】今天写了个算法解决了阿拉伯数字和中文大写的相互转换,给大家看看顺便帮我测试下啊
再几天就元旦了 祝大家元旦快乐
哎,眼看就毕业了,工作还没着落啊,长沙的IT公司少啊……去外面闯一个人又觉得恐惧啊……
明年来希望找个好工作啊^^! 哦弥陀哦佛……哎生活不易啊!!!
- Java code
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.Stack;import java.util.regex.Matcher;import java.util.regex.Pattern;public class ArabToChinese {public Stack<String>stack;public ArabToChinese(){stack=new Stack<String>();} public void pushToStack(Stack<String>stack,char c){ 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; } } public void pushToStack_(Stack<String>stack,String s){ int digit1=5; int digit2=9; int digit3=1; for(int i=s.length()-1,j=0,k=0;i>=0;i--){ char c=s.charAt(i); j++; k++; if(k==2){ stack.push("拾"); } else if(k==3){ stack.push("佰"); } else if(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; } else pushToStack(stack,c); } } public String popToString(Stack<String>stack){ String s=""; StringBuffer buffer=new StringBuffer(); 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("零分",""); return s; } public static void main(String args[]) throws IOException{ boolean available=false; String s=""; String s1=""; System.out.print("请输入一个数字:"); while(!available){ BufferedReader buffer; buffer=new BufferedReader(new InputStreamReader(System.in)); s=buffer.readLine(); Pattern pattern=Pattern.compile("^[^0][0-9]+(.[0-9]{1,2})$"); Matcher matcher=pattern.matcher(s); boolean isMatched=matcher.find(); if(isMatched==true){ available=true; } else System.out.println("你输入的数字有错误,请重新输入:"); } ArabToChinese atc=new ArabToChinese(); int index=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(int i=1,j=0;i>=0;i--){ char c=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 code
public class ChineseToArabDigit { public static void main(String args[]){ long num_Buffer=0; long num_add=0; long num_mutiply=0; long result_yi=0; long result_wan=0; char c1='圆'; String s="壹亿亿圆"; // String s="叁仟柒佰贰拾壹贰仟叁佰柒拾壹亿捌仟贰佰柒拾叁壹仟贰佰捌拾壹圆"; int index=s.indexOf('圆'); s=s.substring(0,index); for(int i=0;i<s.length();i++){ char c=s.charAt(i); int index_lastyi=s.lastIndexOf('亿'); if(i!=s.length()-1){ 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<index_lastyi){ num_mutiply=num_add*10000; } else if(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); }}[解决办法]
顶顶你
[解决办法]
顶下!
[解决办法]
顶
http://www.blogjava.net/majianan/archive/2006/10/16/75431.html
[解决办法]
[解决办法]
不错 祝福楼主
[解决办法]
不错,谢谢楼主分享啊
[解决办法]
接分的飘过~~~
------解决方案--------------------
顶~顺便顶2楼的
[解决办法]
不错,谢谢楼主分享啊!!!
[解决办法]
已经不错了,再好好强化下所学的。
出来找工作应该是不成问题的。
[解决办法]
呵呵,我和5楼一样,只做过人民币大小写转换...
我的工作也没着落啊.我湖南的,在南昌,南昌也没什么IT公司...我还准备会长沙来找工作呢...唉.被你这么一说...
[解决办法]
不错
给推荐一下
[解决办法]
太冗余了
[解决办法]
[解决办法]
不 错,
[解决办法]
up
[解决办法]
不错,继续努力
[解决办法]
不错呀
我也做过,面试的时候碰到的一个机试。
没你那么完整!
up
up
[解决办法]
好长啊
[解决办法]
顶
[解决办法]
接分来了.
[解决办法]
lz找工作,明年不妨到北京看看,这边的公司还是比较多的。机会也比较多。趁年轻,多闯闯,是好事。
[解决办法]
接分啊,收藏起来。
[解决办法]
顶顶顶
[解决办法]
嗯,还行!代码挺简单的!
[解决办法]
太长了吧, 还全都是分支, 写的太乱了, 太低效了, 哈
[解决办法]
看不懂
[解决办法]
不错哦~~up!
[解决办法]
似乎BUG太多了!
[解决办法]
写点有技术含量的JAVA代码出来```` 必须QQ 类似
[解决办法]
cc
[解决办法]
顶下
[解决办法]
学习了。呵呵!
[解决办法]
不错,学习!^_^
[解决办法]
祝楼主好运 早日找到好工作
[解决办法]
up LZ
[解决办法]
就业压力大,希望搂主能提升自身能力,这样就不用怕了,加油吧。
[解决办法]
谢谢诶你太厉害了
[解决办法]
支持楼主!
顺便接下分.
告诫下楼主,既然已经大学毕业了,
来南下找份高收入的工作很正常的,
没什么可怕的!!!
------解决方案--------------------
祝福!
[解决办法]
支持,接分
[解决办法]
分的飘过~~~
[解决办法]
不错
[解决办法]
good!
[解决办法]
感谢分享,收藏了~~谢谢~~~
[解决办法]
写啊
[解决办法]
超漂亮的asp个人主页全站源码
内容:
为了感谢广大网友一直以来对夜末工作室的支持,并且在寒假和春节即将来临之季“夜末工作室”将“夜末流离asp全站源码优化后完全免费下载使用。
夜末流离演示地址:http://www.y-mo.cn/vip
夜末流离下载地址:http://www.y-mo.cn/Download_view.asp?id=2077
[解决办法]
楼主不错耶,相信你能找到好工作。
收藏。。。。
[解决办法]
up
[解决办法]
楼主 和我情况一样的