1,问题描述:将数字金额转成中文大写
2,源代码如下
public class ZHapi {
private static String[] tmp = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};
public static void main(String[] args){
String endans = "";
String str = "1234567890.345";
endans = getBigword(str);
System.out.println(endans);
}
public static String getBigword(String money) {
String ans = "";
if (money.equals("0.00") || money.equals("0")) {
return "零元整"; }
String sp = "";
String[] fuck = new String[0];
if (money.contains(".")) {
fuck = money.split("\\.");
sp = fuck[0];
}else{ sp = money; }
if (sp.length() > 8) {
ans = ans + getaaaa(sp.substring(0, sp.length() - 8)) + "亿";
ans = ans + getaaaa(sp.substring(sp.length() - 8, sp.length() - 4)) + "万";
ans = ans + getaaaa(sp.substring(sp.length() - 4)) + "圆";
}else if (sp.length() > 4) {
ans = ans + getaaaa(sp.substring(0, sp.length() - 4)) + "万";
ans = ans + getaaaa(sp.substring(sp.length() - 4)) + "圆";
}else {
if(!getaaaa(sp).equals("")){
ans = ans + getaaaa(sp)+"圆"; }
}
if (money.contains(".")) {
String midsp = fuck[1];
if (fuck[1].length() > 3) {
midsp = fuck[1].substring(0, 3); }
char[] start = midsp.toCharArray();
int[] intstart = new int[start.length];
for (int i = 0; i < start.length; i++) {
intstart[i] = Integer.parseInt(String.valueOf(start[i]));
if (i==0&&intstart[i] != 0) {
ans = ans + tmp[intstart[i]] + "角"; }
if (i==1&&intstart[i] != 0) {
ans = ans + tmp[intstart[i]] + "分"; }
if (i==2&&intstart[i] != 0) {
ans = ans + tmp[intstart[i]] + "厘"; }
}
}else{ ans = ans + "整"; }
return ans;
}
public static String getaaaa(String sp) {
String ans = "";
if(sp.length() == 1){
if(!sp.equals("0")){
ans = ans + tmp[Integer.parseInt(sp)] ; }
}
if (sp.length() == 4) {
char[] start2 = sp.toCharArray();
ans = getword(start2) ; }
if (sp.length() == 2) {
if (sp.charAt(1) == '0') {
ans = ans + tmp[Integer.parseInt(String.valueOf(sp.charAt(0)))] +"拾";
} else {
ans = ans + tmp[Integer.parseInt(String.valueOf(sp.charAt(0)))] + "拾" + tmp[Integer.parseInt(String.valueOf(sp.charAt(1)))] ; }
}
if (sp.length() == 3) {
if (sp.charAt(1) == '0' && sp.charAt(2) == '0') {
ans = ans + tmp[Integer.parseInt(String.valueOf(sp.charAt(0)))] + "佰"; }
if (sp.charAt(1) == '0' && sp.charAt(2) != '0') {
ans = ans + tmp[Integer.parseInt(String.valueOf(sp.charAt(0)))] + "佰零" + tmp[Integer.parseInt(String.valueOf(sp.charAt(2)))] ; }
if (sp.charAt(1) != '0' && sp.charAt(2) == '0') {
ans = ans + tmp[Integer.parseInt(String.valueOf(sp.charAt(0)))] + "佰" + tmp[Integer.parseInt(String.valueOf(sp.charAt(1)))] ; }
if (sp.charAt(1) != '0' && sp.charAt(2) != '0') {
ans = ans + tmp[Integer.parseInt(String.valueOf(sp.charAt(0)))] + "佰" + tmp[Integer.parseInt(String.valueOf(sp.charAt(1)))] + "拾" + tmp[Integer.parseInt(String.valueOf(sp.charAt(2)))] ; } }
return ans;
}
public static String getword(char[] start){
String answer = "";
int[] intstart = new int[start.length];
int acount = 0;
if(start.length == 4) {
if (start[1] == '0' && start[2] == '0' && start[3] == '0') {
return answer = answer + start[0] + "仟"; }
}
for (int i = 0; i < start.length; i++) {
intstart[i] = Integer.parseInt(String.valueOf(start[i]));
if(i== 0) {
if (intstart[i] != 0) {
answer = answer + tmp[intstart[i]] + "仟";
} else {
answer = answer + "零"; }
}
if(i == 1) {
if (intstart[i] != 0) {
answer = answer + tmp[intstart[i]] + "佰";
acount = 0;
} else if (acount == 0) {
answer = answer + "零";
acount = 1; }
}
if(i == 2) {
if (intstart[i] != 0) {
answer = answer + tmp[intstart[i]] + "拾";
acount = 0;
} else if (acount == 0) {
answer = answer + "零"; }
}
if (i == 3) {
if (intstart[i] != 0) {
answer = answer + tmp[intstart[i]]; }
}
}
return answer;
}
}
3,想看优化之后的源码请点击以下传送门
结尾:书写不易~~ 记得给纵横菌点赞哦~