题解 | #学英语#

学英语

http://www.nowcoder.com/practice/1364723563ab43c99f3d38b5abef83bc

import java.util.*;

public class Main {
    static String[] single = {"", " one", " two", " three", " four", " five", " six", " seven", " eight", " nine"};
    static String[] tes = {" ten", " eleven", " twelve", " thirteen", " fourteen", " fifteen", " sixteen", " seventeen", " eighteen", " nineteen"};
    static String[] x = {"", "", " twenty", " thirty", " forty", " fifty", " sixty", " seventy", " eighty", " ninety"};
    static String[] y = {"", " thousand", " million", " billion"};
    static String h = " hundred and";

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String num = sc.nextLine();
        if (num.length() % 3 == 1) {
            num = "00" + num;
        } else if (num.length() % 3 == 2) {
            num = "0" + num;
        }
        int index;
        int size = num.length();
        StringBuilder sb = new StringBuilder();
        for (int i = size; i > 2; i -= 3) {
            index = i > 12 ? (i - 12) / 3 : i / 3;
            String temp = num.substring(size - i, size - i + 3);
            if (i==3 && "100".equals(temp)){
                sb.append(" one hundred");
            }else {
                sb.append(calc(temp)).append(y[index - 1]);
            }
        }
        System.out.println(sb.substring(1, sb.length()));
    }

    public static String calc(String a) {
        int num = Integer.parseInt(a);
        StringBuilder sb = new StringBuilder();
        if (num / 100 > 0) {//百位数
            sb.append(single[num / 100]).append(h);
        }
        num = num % 100;
        if (num / 10 >= 2) {//大于等于二十的十位数
            sb.append(x[num / 10]).append(single[num % 10 % 10]);
        } else if (num / 10 == 1) {
            sb.append(tes[num % 10]);
        } else {
            sb.append(single[num % 10]);
        }
        return sb.toString();
    }
    
}
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务