题解 | #人民币转换#
人民币转换
https://www.nowcoder.com/practice/00ffd656b9604d1998e966d555005a4b
import java.util.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String[] Nums = {"", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};
String[] Power = {"", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟"};
while (in.hasNextDouble()) { // 注意 while 处理多个 case
Double n = in.nextDouble();
List<String> list = new ArrayList<>();
//处理小数位
//String.split处理方便很多
if (n % 1 == 0)list.add("整");
else {
if ((int)Math.round(n * 100) % 10 != 0) {
list.add("分");
list.add(Nums[(int)Math.round(n * 100) % 10]);
}
if ((int)(n * 100) % 100 / 10 !=0){
list.add("角");
list.add(Nums[(int)(n * 100) % 100 / 10]);
}
}
//处理整数部分
int power = 0;
int z = (int)Math.round(n - 0.5); //取整数部分
if (z != 0)list.add("元");
while (z != 0) {
int q = z % 10; //以10为单位讨论
if (q != 0) {
list.add(Power[power]);
if ((power == 1 || power == 5 || power == 9) && q == 1)list.add("");//十几的情况
else list.add(Nums[q]);
} else {
list.add("零");
}
z /= 10; //右移一位
power++;//单位上升一位
}
list.add("人民币");
StringBuilder sb = new StringBuilder();
for (int i = list.size() - 1; i >= 0; i--) {
sb.append(list.get(i));
}
System.out.println(sb.toString().replaceAll("[零]+", "零"));
}
}
}
