寫了好久啊,我好菜啊
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
String number = scanner.nextLine();
scanner.close();
callNumber(number);
}
private static void callNumber(String text){
String result;
if(text.length() <= 4){
result = lowerThan10000(text, true);
} else if(text.length() <= 8){
String n1 = text.substring(text.length() - 4, text.length());
String n2 = text.substring(0, text.length() - 4);
result = lowerThan10000(n2, true) + "wan ";
result += lowerThan10000(n1, false);
} else {
String n1 = text.substring(text.length() - 4, text.length());
String n2 = text.substring(text.length() - 8, text.length() - 4);
String n3 = text.substring(0, text.length() - 8);
result = lowerThan10000(n3, true) + "yi ";
result += lowerThan10000(n2, false) + "wan ";
result += lowerThan10000(n1, false);
}
System.out.println(result);
}
static String[] chineseNumbers = {"ling", "yi", "er", "san", "si", "wu", "liu", "qi", "ba", "jiu", "shi"};
static String[] groups = {"ge", "shi", "bai", "qian", "wan", "yi"};
private static String lowerThan10000(String text, boolean isStart){
int length = text.length();
int number = Integer.parseInt(text);
if(length <= 1) {
return chineseNumbers[number] + " ";
} else if(text.startsWith("1") && length == 2 && isStart){
if(text.equals("10")) return "shi ";
return "shi " + chineseNumbers[number % 10] + " ";
}
int factor = (int) Math.pow(10, length - 1);
int index = length - 1;
boolean isLastZero = false;
StringBuilder sBuilder = new StringBuilder();
while (factor > 0){
if(number == 0)
break;
int count = number / factor;
number -= factor * count;
factor /= 10;
if(count == 0){
if(!isLastZero) {
sBuilder.append(chineseNumbers[count] + " ");
}
isLastZero = true;
} else{
sBuilder.append(chineseNumbers[count] + " ");
if(index > 0){
sBuilder.append(groups[index] + " ");
}
isLastZero = false;
}
index -= 1;
}
return sBuilder.toString();
}
}