Java阿拉伯数字转汉字表述

面试遇到算法题,就是把阿拉伯数字转化成汉字的描述,比如123是一百二十三,10080是一万零八十

自己尝试实现了一下,发现实现的太麻烦,代码太多而且容易有考虑不到的地方,下面贴出,自己的写法和网上找的比较简便的写法

自己的写法:

public class NumConvertUtil{private static final String[] nums=new String[]{"零","一","二","三","四","五","六","七","八","九"};private static final String[] units=new String[]{"十","百","千","万","亿"};public static void main(String[] args){//创建输入对象Scanner sc=new Scanner(System.in);//获取用户输入的字符串String str=null;int times=0;while(times<20){times++;System.out.print("请输入数字:");str=sc.nextLine();int num=Integer.parseInt(str);String res=convert(num);System.out.print("结果是:"+res);}//for(int i=10001;i<12001;i++){//	System.out.println(convert(i));//}}/*** 将数字转换为汉字  例如 123  一百二十三*   10340 一万零三百四十*/public static String convert(int input){String ouput="";if (input>=100000000){ouput=thousandAndLess(ouput,input/100000000);ouput+=units[4];}input=input%100000000;if(input>=10000){ouput=thousandAndLess(ouput,input/10000);ouput+=units[3];}else{ouput+=addZero(ouput);}input=input%10000;ouput=thousandAndLess(ouput,input);return ouput;}//获取千及以下private static String thousandAndLess(String ouput,int input){if (input/1000>0){ouput+=nums[input/1000];ouput+=units[2];}else{ouput+=addZero(ouput);}input=input%1000;if (input/100>0){ouput+=nums[input/100];ouput+=units[1];}else{ouput+=addZero(ouput);}input=input%100;if (input/10>0){if(ouput.length()>0||input/10>1){ouput+=nums[input/10];}ouput+=units[0];}else{ouput+=addZero(ouput);}input=input%10;if (input>0){ouput+=nums[input];}if (ouput.length()>0&&nums[0].equals(ouput.substring(ouput.length()-1))){ouput=ouput.substring(0,ouput.length()-1);}return ouput;}private static String addZero(String ouput){if(ouput.length()>0&&!nums[0].equals(ouput.substring(ouput.length()-1))&&!units[0].equals(ouput.substring(ouput.length()-1))){return nums[0];}else{return "";}}
}

网上的写法
java中数字转汉字

public class NumConvertChinese{private static final String[] nums=new String[]{"零","一","二","三","四","五","六","七","八","九"};private static final String[] units=new String[]{"","十","百","千","万","十","百","千","亿","十","百","千"};public static void main(String[] args){//创建输入对象Scanner sc=new Scanner(System.in);//获取用户输入的字符串/* String str=null;int times=0;System.out.print("请输入数字:");str=sc.nextLine();int num=Integer.parseInt(str);String res=convert(num);System.out.print("结果是:"+res); *//* while(times<20){times++;System.out.print("请输入数字:");str=sc.nextLine();int num=Integer.parseInt(str);String res=convert(num);System.out.print("结果是:"+res);} */for(int i=10001;i<12001;i++){System.out.println(convert(i));}}/*** 将数字转换为汉字  例如 123  一百二十三*   10340 一万零三百四十*/public static String convert(int input){String output="";int count=0;while(input>0){output=nums[input%10]+units[count]+output;input=input/10;count++;}return output.replaceAll("零[千百十]", "零").replaceAll("零+万", "万").replaceAll("零+亿", "亿").replaceAll("亿万", "亿零").replaceAll("零+", "零").replaceAll("零$", "");}
}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部