人民币阿拉伯数字转中文大写

来源:互联网 发布:销售部数据流程图 编辑:程序博客网 时间:2024/05/16 06:46
public class Money {public static void main(String[] args) {String xString;xString=change("01101010.11");System.out.println(xString);}public static String change(String p){//输出字符串String x="";  //低四位输出字符串String minString="";//高四位输出字符串String highString = "";//整数字符串String aString;//小数字符串String bString;//高四位输入字符串String cString = "";//低四位字符串String dString="";char[] name={'零','壹','贰','叁','肆','伍','陆','柒','捌','玖'};if(p.indexOf('.')!=-1){//去除前置0,如果整数全为0,则输出零圆for(int i=0;i<p.length()-(p.length()-p.indexOf('.'));i++){if(p.charAt(i)!='0'){p=p.substring(i);break;}if(i==p.length()-(p.length()-p.indexOf('.')+1)){x+="零圆";p=p.substring(i);}}//将整数传给aString,小数传给bStringaString=p.substring(0,p.indexOf('.'));bString=p.substring(p.indexOf('.')+1);}else {for(int i=0;i<p.length();i++){if(p.charAt(i)!='0'){p=p.substring(i);break;}if(i==p.length()-1){x+="零圆";p=p.substring(i);}}aString=p;bString="";}//判断整数部分是否大于4位,是就调用第四位和高四位输出方法,否就调用低四位输出方法if(aString.length()>4){cString=aString.substring(0,aString.length()-4);dString=aString.substring(aString.length()-4);highString=changeMax(cString,name);minString=changeMin(dString,name);}else{minString=changeMin(aString,name);}//如果存在高四位,万位为0,输出中转零,并把整数值加给输出字符串if(cString.length()>0){if(cString.charAt(cString.length()-1)=='0')x=x+highString+"零"+minString;}else {x=x+minString;}//将小数值加给输出字符串x+=changePoint(bString,name);return x;}/* * 低四位的转换函数 */public static String changeMin(String p,char[] name) {String x="";char[] type={'圆','拾','佰','仟'};x+=part(p, name, type,p.length()-1);return x;}/* * 高四位的转换函数 */public static String changeMax(String p,char[] name) {String x="";char[] type={'万','拾','佰','仟'};x+=part(p, name, type,p.length()-1);return x;}/* * 小数位的转换函数 */public static String changePoint(String p,char[] name) {String x="";char[] type={'分','角'};if(p.equals("00")||p.equals("0")||p.equals("")){x+="整";}else {for(int i=0;i<p.length();i++){if (p.charAt(i)!='0') {//如果小数后不为零,则输出正常值x+=name[p.charAt(i)-48]+""+type[type.length-1-i];}else{if(i!=p.length()-1){//如果角位为0,,则输出零,分位为0则不输出x+=name[p.charAt(i)-48];}}}}return x;}/* * 实际转换函数 */public static String part(String p,char[] name,char[] type,int i){String x="";for(int j=0;j<p.length();j++){//跳过中间的连续零值,并输出零if(p.charAt(j)=='0'){while(p.charAt(j)=='0'){j++;i--;if(j==p.length())break;}if(j!=p.length()){j--;x+=name[p.charAt(j)-48];}else {   //如果末尾为零,则输出最后的那个圆或者万i++;x+=type[i];}}else{   //正常输出x+=name[p.charAt(j)-48]+""+type[i];i--;}}return x;}}

0 0
原创粉丝点击