输入要求:一个double格式数字
输出要求:由输入转换成的一个人民币大写格式字符串
代码如下:
import java.util.Scanner;
/**
* Created with IntelliJ IDEA.
* Description:
* User: Y
* Date: 2019-07-29
* Time: 21:44
*/
public class Main {
private static String[] string = {"仟", "佰", "拾", ""};
private static boolean flag = false;
private static boolean flag1 = false;
private static boolean flag2 = false;
private static String toUpperCase() {
Scanner scanner = new Scanner(System.in);
String s = scanner.nextLine();
String[] arr = s.split("\\.");
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("人民币");
if (arr[0].length() <= 4) {
if (arr[0].length()==2&&arr[0].charAt(0)=='1'){
flag2=true;
}
f1(arr[0], stringBuilder);
} else if (arr[0].length() > 4 && arr[0].length() <= 8) {
if (arr[0].length()==6&&arr[0].charAt(0)=='1'){
flag2=true;
}
StringBuilder s1 = new StringBuilder(arr[0]);
while (s1.length() != 8) {
s1.insert(0, "0");
}
String result = s1.toString();
f1(result.substring(0, 4), stringBuilder);
if (flag1!=false&&!result.substring(0, 4).equals("0000")){
stringBuilder.append("万");
}
f1(result.substring(4), stringBuilder);
} else if (arr[0].length() > 8 && arr[0].length() <= 12) {
if (arr[0].length()==10&&arr[0].charAt(0)=='1'){
flag2=true;
}
StringBuilder s1 = new StringBuilder(arr[0]);
while (s1.length() != 12) {
s1.insert(0, "0");
}
String result = s1.toString();
f1(result.substring(0, 4), stringBuilder);
if (flag1!=false&&!result.substring(0, 4).equals("0000")){
stringBuilder.append("亿");
}
f1(result.substring(4, 8), stringBuilder);
if (flag1!=false&&!result.substring(4,8).equals("0000")){
stringBuilder.append("万");
}
f1(result.substring(8), stringBuilder);
}
stringBuilder.append("元");
if (arr[0].length()==s.length()){
stringBuilder.append("整");
return stringBuilder.toString();
}
if (Integer.valueOf(arr[1])== 0) {
stringBuilder.append("整");
} else if (arr[1].length() == 1) {
stringBuilder.append(func(arr[1].charAt(0)) + "角");
} else if (arr[1].length() == 2){
if (arr[1].charAt(0)=='0'){
stringBuilder.append("零");
}else {
stringBuilder.append(func(arr[1].charAt(0))+"角");
}
stringBuilder.append(func(arr[1].charAt(1))+"分");
}
return stringBuilder.toString();
}
private static String func(char c) {
switch (c) {
case '1':
return "壹";
case '2':
return "贰";
case '3':
return "叁";
case '4':
return "肆";
case '5':
return "伍";
case '6':
return "陆";
case '7':
return "柒";
case '8':
return "捌";
case '9':
return "玖";
}
return null;
}
private static String f1(String s, StringBuilder stringBuilder) {
for (int i = 0; i < s.length(); i++) {
if (flag1 && s.charAt(i) == '0') {
flag = true;
} else if (s.charAt(i) != '0') {
if (flag) {
stringBuilder.append("零");
}
if (flag2==true) {
stringBuilder.append("拾");
flag2=false;
continue;
}
stringBuilder.append(func(s.charAt(i)));
stringBuilder.append(string[4 - s.length() + i]);
flag = false;
flag1 = true;
}
}
return stringBuilder.toString();
}
public static void main(String[] args) {
System.out.println(toUpperCase());
}
}