转载新表面出处
新建一个test类
public class test {
public static void main(String arg[]){
String strr = "5122565.585"; //定义转变的字符串
XiaoxieshuziToDaxieRMB(strr); 调用该方法进行转换
}
public static void XiaoxieshuziToDaxieRMB(String strr){
int[] num = new int[2]; //num[0]保存整数部分,num[1]保存小数部分
HashMap<String,String> map = new HashMap<String, String>(); //定义一个hashmap 来保存大写小写的一一对应
map.put("1", "壹");
map.put("2", "贰");
map.put("3", "叁");
map.put("4", "肆");
map.put("5", "伍");
map.put("6", "陆");
map.put("7", "柒");
map.put("8", "捌");
map.put("9", "玖");
map.put("0", "零");
String[] str = new String[]{"元","十","百","千","万","十","百","千","亿","十","百","千"}; //保存大写的单位
String[] strrr = new String[]{"厘","分","角"}; //保存大写的单位
StringTokenizer fenxi = new StringTokenizer(strr,"."); //根据. 对字符串进行分段
for(int i=0;fenxi.hasMoreTokens();i++){
num[i] = Integer.parseInt(fenxi.nextToken()); //获取.间隔的字符串
}
System.out.print("整数部分是"+num[0]+"小数部分是"+num[1]+"\n");
//对整数部分进行处理
int index = 0;
String[] str1 = new String[String.valueOf(num[0]).length()]; //定义一个string[] 保存小写转换后的大写
while(num[0]%10 > 0){ //整数部分的余数
if(map.containsKey(String.valueOf(num[0]%10))){
str1[index] = map.get(String.valueOf(num[0]%10));
}
num[0] = num[0]/10;
index++;
}
for(int j= str1.length-1;j>=0;j--){
System.out.print(""+str1[j]+""+str[j]);
}
// 对小数部分进行处理
String[] strrrr = new String[String.valueOf(num[1]).length()];
int q = 0;
while(num[1]%10 > 0){ //小数部分的余数
if(map.containsKey(String.valueOf(num[1]%10))){
strrrr[q] = map.get(String.valueOf(num[1]%10));
}
// System.out.println(""+num[0]%10);
num[1] = num[1]/10;
q++;
}
for(int j= strrrr.length-1;j>=0;j--){
System.out.print(""+strrrr[j]+""+strrr[j]);
}
}
}
结果如下: