金额转换,阿拉伯数字转换成中国传统形式
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);

浙公网安备 33010602011771号