代码改变世界

金额转换,阿拉伯数字转换成中国传统形式

2011-10-29 15:47  刘XX  阅读(628)  评论(0)    收藏  举报

这道题也是面试中遇到次数可以的题目,自己分析了下,总是感觉不是很好,我的思路是这样的:

1、首先将数字拆分开来,进行解析,我的方法就是将int转换成String,这样方便解析:

String str = money + "";

 2、将一些需要用到的中文放到数组里面:

String[] num = new String[] { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒","捌", "玖", "拾", "整" };

 3、将单位放到List集合里面:

List<String> unit = new ArrayList<String>();
unit.add("拾");unit.add("佰");unit.add("仟");unit.add("圆");unit.add("萬")

 4、通过循环依次解析:

  代码如下:

  

View Code
public static void main(String[] args) {
int money = 45000513;
String str = money+"";

String[] num = {"零","一","二","三","四","五","六","七","八","九"};

List<String> unit = new ArrayList<String>();
unit.add("十");
unit.add("百");
unit.add("千");
unit.add("元");
unit.add("万");

String changed = "";
int count = 3;
int last = 0;
for (int i = 0; i < str.length(); i++) {
String temp = str.substring(str.length()-i-1,str.length()-i);
int n = Integer.parseInt(temp);
if(n!=0){
changed = num[n]+ unit.get(count)+changed;
}else{
if(last!=0){
changed = "零"+changed;
}
}

if(count==3){
if(n==0){
changed = unit.get(3)+ changed;
}
unit.remove(3);
count = -1;
}
last = n;
count++;
}
System.out.println(changed);
}



// 定义任意的阿拉伯数字
int money = 10020030;

// 用来存放转换过的数字
String changed = "";
// 用来计算数值的单位,以圆为开始
int count = 3;
// 记录每次转换的数字
int last = 0;
String str = money + "";

// 循环转换,从数字的末端每次截取一个,并转换
for (int i = 1; i <= str.length(); i++) {
String temp = str.substring(str.length() - i, str.length() - i + 1);
int index = Integer.parseInt(temp);
if(!temp.equals("0")){
changed = num[index] + unit.get(count) +changed;
}else{
if(last != 0){
changed = "零"+changed;
}
}
if (count == 3) {
//changed = unit.get(count) + changed;
unit.remove(count);
count = -1;
}
last = index;
count++;
}

System.out.println(changed);