一、思路分析:
1.首先定义一个参考的字符数组,记录数组下标对应的汉语拼音(0-9);
2.定义一个数位标记temp,用来记录当前位数的单位,从最高位开始,从左往右。
小单位:个(当前数字不计)、十、百、千
大单位:万、亿
3.对于“yi shi”而言只能出现在中间,而开头直接读作“shi 几”。所以需要判断处理。
例如:十二 不能输出“yi shi er” 而是 “shi er”。
二、代码展示:
import java.util.Scanner;
public class Main {
public static void output(String[] refer, String str) {
StringBuilder sb = new StringBuilder();
int temp = str.length();
for (int i = 0; i < str.length(); i++, temp--) {
if (str.charAt(i) != '0') {
if (i - 1 >= 0 && str.charAt(i - 1) == '0') {
sb.append(refer[0]).append(" ");
}
sb.append(refer[str.charAt(i) - '0']).append(" ");
switch (temp % 4) {
case 0:
sb.append("qian").append(" ");
break;
case 2:
sb.append("shi").append(" ");
break;
case 3:
sb.append("bai").append(" ");
break;
default:
break;
}
}
switch (temp) {
case 9:
sb.append("yi").append(" ");
break;
case 5:
sb.append("wan").append(" ");
break;
default:
break;
}
}
if (sb.substring(0, 6).equals("yi shi")) {
sb.delete(0, 3);
}
System.out.println(sb);
}
public static void main(String[] args) {
String[] refer = {"ling", "yi", "er", "san", "si", "wu", "liu", "qi", "ba",
"jiu"};
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
output(refer, str);
}
}
三、测试结果: