7-23 币值转换 分数 20 作者 陈建海 单位 浙江大学 输入一个整数(位数不超过9位)代表一个人民币值(单位为元),请转换成财务要求的大写中文格式。如23108元,转换后变成“贰万叁仟壹百零捌”元。为了简化输出,用小写英文字母a-j顺序代表大写数字0-9,用S、B、Q、W、Y分别代表拾、百、仟、万、亿。于是23108元应被转换输出为“cWdQbBai”元。
输入格式: 输入在一行中给出一个不超过9位的非负整数。
输出格式: 在一行中输出转换后的结果。注意“零”的用法必须符合中文习惯。
输入样例1: 813227345 输出样例1: iYbQdBcScWhQdBeSf 输入样例2: 6900 输出样例2: gQjB import java.util.Scanner;
public class Main {
public static void main(String[] args) { Scanner scanner = new Scanner(System.in); long num = scanner.nextLong(); scanner.close(); char[] number = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'}; char[] unit = {'\0', 'S', 'B', 'Q', 'W', 'S', 'B', 'Q', 'Y'}; if (num == 0) { System.out.println("a"); return; } int[] a = new int[10]; int i = 0; while (num > 0) { a[i++] = (int) (num % 10); num /= 10; } i--; StringBuilder result = new StringBuilder(); while (i >= 0) { if (a[i] != 0) { result.append(number[a[i]]); result.append(unit[i]); } else { if (i == 4 && (a[5] != 0 || a[6] != 0 || a[7] != 0)) { result.append('W'); } if ((i - 1) >= 0 && a[i - 1] != 0) { result.append('a'); } } i--; } System.out.println(result.toString()); } }
|