import java.util.Scanner;
/**
* @author Green.Gee
* @date 2022/12/26 14:00
* @email green.gee.lu@gmail.com
*/
public class ConvertRMB {
/**
* 描述
* 1、中文大写金额数字前应标明“人民币”字样。
* 中文大写金额数字应用壹、贰、叁、肆、伍、陆、柒、捌、玖、拾、佰、仟、万、亿、元、角、分、零、整等字样填写。
* <p>
* 2、中文大写金额数字到“元”为止的,在“元”之后,应写“整字,
* 如532.00应写成“人民币伍佰叁拾贰元整”。在”角“和”分“后面不写”整字。
* <p>
* 3、阿拉伯数字中间有“0”时,中文大写要写“零”字,阿拉伯数字中间连续有几个“0”时,中文大写金额中间只写一个“零”字,
* 如6007.14,应写成“人民币陆仟零柒元壹角肆分“。
* <p>
* 4、10应写作“拾”,100应写作“壹佰”。
* 例如,1010.00应写作“人民币壹仟零拾元整”,110.00应写作“人民币壹佰拾元整”
* <p>
* 5、十万以上的数字接千不用加“零”,
* 例如,30105000.00应写作“人民币叁仟零拾万伍仟元整”
* <p>
* 输入描述:
* 输入一个double数
* <p>
* 输出描述:
* 输出人民币格式
* <p>
* 示例1
* 输入:
* 151121.15
* 复制
* 输出:
* 人民币拾伍万壹仟壹佰贰拾壹元壹角伍分
* 复制
* 示例2
* 输入:
* 1010.00
* 复制
* 输出:
* 人民币壹仟零拾元整
*/
static String[] rmb_nums = {
"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖", "拾"
};
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
while (in.hasNextLine()) { // 注意 while 处理多个 case
String[] rmb = in.nextLine().split("\\.");
if (rmb.length == 2) {
String prefix = prefixHandle(rmb[0]);
String suffix = suffixHandle(rmb[1]);
System.out.println(prefix + suffix);
}
}
}
private static String prefixHandle(String prefix) {
StringBuffer prefixStr = new StringBuffer("人民币");
long num = Long.parseLong(prefix);
if (num / 100000000 >= 1) {
long yi = num / 100000000;
long yi_rest = num % 100000000;
System.out.println(yi_rest);
} else if (num / 10000 >= 1) {
long wan = num / 10000;
if (wan >= 1000) {
long wan_unit = wan / 1000;
prefixStr.append(rmb_nums[(int) wan_unit]).append("仟");
long wan_unit_rest = wan % 1000;
if (wan_unit_rest >= 1) {
if (wan_unit_rest >= 100) {
long bai = wan_unit_rest / 100;
prefixStr.append(rmb_nums[(int) bai]).append("佰");
if (wan_unit_rest % 100 != 0) {
long bai_rest = wan_unit_rest % 100;
if (bai_rest >= 10) {
long shi = bai_rest / 10;
if (shi == 1) {
prefixStr.append("拾");
} else {
prefixStr.append(rmb_nums[(int) shi]);
prefixStr.append("拾");
}
if (bai_rest % 10 != 0) {
long shi_rest = shi % 10;
prefixStr.append(rmb_nums[(int) shi_rest]).append("万");
} else {
prefixStr.append("万");
}
} else {
prefixStr.append("零");
prefixStr.append(rmb_nums[(int) bai_rest]).append("万");
}
} else {
prefixStr.append("万");
}
} else if (wan_unit_rest >= 10) {
prefixStr.append("零");
long shi = wan_unit_rest / 10;
if (shi == 1) {
prefixStr.append("拾");
} else {
prefixStr.append(rmb_nums[(int) shi]);
prefixStr.append("拾");
}
if (wan_unit_rest % 10 != 0) {
long shi_rest = wan_unit_rest % 10;
prefixStr.append(rmb_nums[(int) shi_rest]).append("万");
} else {
prefixStr.append("万");
}
} else {
prefixStr.append("零");
prefixStr.append(rmb_nums[(int) wan_unit_rest]).append("万");
}
} else {
prefixStr.append("万");
}
} else if (wan >= 100) {
long wan_unit = wan / 100;
prefixStr.append(rmb_nums[(int) wan_unit]).append("佰");
if (wan % 100 != 0) {
long wan_rest = wan % 100;
if (wan_rest >= 10) {
long shi = wan_rest / 10;
if (shi == 1) {
prefixStr.append("拾");
} else {
prefixStr.append(rmb_nums[(int) shi]);
prefixStr.append("拾");
}
if (wan_rest % 10 != 0) {
long shi_rest = shi % 10;
prefixStr.append(rmb_nums[(int) shi_rest]).append("万");
} else {
prefixStr.append("万");
}
} else {
prefixStr.append("零");
prefixStr.append(rmb_nums[(int) wan_rest]).append("万");
}
} else {
prefixStr.append("万");
}
} else if (wan >= 10) {
long shi = wan / 10;
if (shi == 1) {
prefixStr.append("拾");
} else {
prefixStr.append(rmb_nums[(int) shi]).append("拾");
}
if (wan % 10 != 0) {
long shi_rest = wan % 10;
prefixStr.append(rmb_nums[(int) shi_rest]).append("万");
} else {
prefixStr.append("万");
}
} else {
prefixStr.append(rmb_nums[(int) wan]).append("万");
}
// 万后缀
long wan_rest = num % 10000;
if (wan_rest >= 1) {
if (wan_rest >= 1000) {
long wan_qian = wan_rest / 1000;
prefixStr.append(rmb_nums[(int) wan_qian]).append("仟");
long wan_unit_rest = wan_rest % 1000;
if (wan_unit_rest >= 1) {
if (wan_unit_rest >= 100) {
long wan_unit = wan_unit_rest / 100;
prefixStr.append(rmb_nums[(int) wan_unit]).append("佰");
if (wan_rest % 100 != 0) {
long wan_bai_rest = wan_rest % 100;
if (wan_bai_rest >= 10) {
long shi = wan_bai_rest / 10;
if (shi == 1) {
prefixStr.append("拾");
} else {
prefixStr.append(rmb_nums[(int) shi]);
prefixStr.append("拾");
}
if (wan_bai_rest % 10 != 0) {
long shi_rest = wan_bai_rest % 10;
prefixStr.append(rmb_nums[(int) shi_rest]).append("元");
} else {
prefixStr.append("元");
}
} else {
prefixStr.append("零");
prefixStr.append(rmb_nums[(int) wan_rest]).append("元");
}
} else {
prefixStr.append("元");
}
} else if (wan_unit_rest >= 10) {
prefixStr.append("零");
long wan_unit_rest_shi = wan_unit_rest / 10;
if (wan_unit_rest_shi == 1) {
prefixStr.append("拾");
} else {
prefixStr.append(rmb_nums[(int) wan_unit_rest_shi]).append("拾");
}
if (wan_unit_rest % 10 != 0) {
long shi_rest = wan_unit_rest % 10;
prefixStr.append(rmb_nums[(int) shi_rest]).append("元");
} else {
prefixStr.append("元");
}
} else {
prefixStr.append("零");
prefixStr.append(rmb_nums[(int) wan_unit_rest]).append("元");
}
} else {
prefixStr.append("元");
}
} else if (wan_rest >= 100) {
prefixStr.append("零");
long wan_unit = wan_rest / 100;
prefixStr.append(rmb_nums[(int) wan_unit]).append("佰");
if (wan_rest % 100 != 0) {
long wan_bai_rest = wan_rest % 100;
if (wan_bai_rest >= 10) {
long shi = wan_bai_rest / 10;
if (shi == 1) {
prefixStr.append("拾");
} else {
prefixStr.append(rmb_nums[(int) shi]);
prefixStr.append("拾");
}
if (wan_bai_rest % 10 != 0) {
long shi_rest = wan_bai_rest % 10;
prefixStr.append(rmb_nums[(int) shi_rest]).append("元");
} else {
prefixStr.append("元");
}
} else {
prefixStr.append("零");
prefixStr.append(rmb_nums[(int) wan_rest]).append("元");
}
} else {
prefixStr.append("元");
}
} else if (wan_rest >= 10) {
prefixStr.append("零");
long shi = wan_rest / 10;
if (shi == 1) {
prefixStr.append("拾");
} else {
prefixStr.append(rmb_nums[(int) shi]);
prefixStr.append("拾");
}
if (wan_rest % 10 != 0) {
long shi_rest = wan_rest % 10;
prefixStr.append(rmb_nums[(int) shi_rest]).append("元");
} else {
prefixStr.append("元");
}
} else {
prefixStr.append("零");
prefixStr.append(rmb_nums[(int) wan_rest]).append("元");
}
} else {
prefixStr.append("零");
prefixStr.append("元");
}
} else if (num / 1000 >= 1) {
qian_append(prefixStr, num);
} else if (num / 100 >= 1) {
bai_append(prefixStr, num);
} else if (num / 10 >= 1) {
long shi = num / 10;
shi_append(prefixStr, shi, num);
} else {
if (num != 0) {
prefixStr.append(rmb_nums[(int) num]).append("元");
}
}
return prefixStr.toString();
}
static void qian_append(StringBuffer prefixStr, long num) {
long qian = num / 1000;
prefixStr.append(rmb_nums[(int) qian]).append("仟");
long qian_rest = num % 1000;
if (qian_rest >= 1) {
if (qian_rest >= 100) {
bai_append(prefixStr, qian_rest);
} else if (qian_rest >= 10) {
prefixStr.append("零");
long qian_shi_rest = qian_rest / 10;
shi_append(prefixStr, qian_shi_rest, qian_rest);
} else {
prefixStr.append("零");
prefixStr.append(rmb_nums[(int) qian_rest]).append("元");
}
} else {
prefixStr.append("元");
}
}
static void bai_append(StringBuffer prefixStr, long num) {
long bai = num / 100;
prefixStr.append(rmb_nums[(int) bai]).append("佰");
if (num % 100 != 0) {
long bai_rest = num % 100;
if (bai_rest >= 10) {
long bai_rest_shi = bai_rest / 10;
shi_append(prefixStr, bai_rest_shi, bai_rest);
} else {
prefixStr.append("零");
prefixStr.append(rmb_nums[(int) bai_rest]).append("元");
}
} else {
prefixStr.append("元");
}
}
static void shi_append(StringBuffer prefixStr, long shi, long num) {
if (shi == 1) {
prefixStr.append("拾");
} else {
prefixStr.append(rmb_nums[(int) shi]);
prefixStr.append("拾");
}
ge_append(prefixStr, num);
}
static void ge_append(StringBuffer prefixStr, long num) {
if (num % 10 != 0) {
long shi_rest = num % 10;
prefixStr.append(rmb_nums[(int) shi_rest]).append("元");
} else {
prefixStr.append("元");
}
}
static String suffixHandle(String suffixStr) {
StringBuffer suffix = new StringBuffer();
char jiao = suffixStr.charAt(0);
char fen = suffixStr.charAt(1);
int i = Integer.parseInt(jiao + "");
int j = Integer.parseInt(fen + "");
if (jiao == '0' && fen == '0') {
suffix.append("整");
} else if (jiao != '0' && fen != '0') {
suffix.append(rmb_nums[i]).append("角").append(rmb_nums[j]).append("分");
} else if (jiao != '0') {
suffix.append(rmb_nums[i]).append("角");
} else {
suffix.append(rmb_nums[j]).append("分");
}
return suffix.toString();
}
}
10-29