题解 | #HJ042 学英语#

学英语

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

import java.util.Scanner;

/**
 * HJ42 学英语
 */
public class HJ042 {

    private static String[] ones = new String[]{
            "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine",
            "ten", "eleven", "twelve", "thirteen", "forteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen", "twenty"};

    private static String[] twieties = new String[]{"zero", "ten", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety"};

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()) {
            String str = sc.nextLine();
            if (str.length() <= 9) {
                System.out.println(getEn(Integer.parseInt(str)));
            } else {
                System.out.println("error");
            }
        }
        sc.close();
    }

    private static String getEn(int num) {
        String stren = "error";
        if (num <= 20) {
            stren = ones[num];
        } else if (num < 100) {
            int remainder = num % 10;
            if (remainder == 0) {
                stren = twieties[num / 10];
            } else {
                stren = twieties[num / 10] + " " + ones[remainder];
            }
        } else if (num < 1000) {
            int remainder = num % 100;
            if (remainder == 0) {
                stren = ones[num / 100] + " hundred";
            } else {
                stren = ones[num / 100] + " hundred and " + getEn(remainder);
            }
        } else if (num < 1000000) {
            int remainder = num % 1000;
            if (remainder == 0) {
                stren = getEn(num / 1000) + " thousand";
            } else {
                stren = getEn(num / 1000) + " thousand " + getEn(remainder);
            }
        } else if (num < 1000000000) {
            int remainder = num % 1000000;
            if (remainder == 0) {
                stren = getEn(num / 1000000) + " million";
            } else {
                stren = getEn(num / 1000000) + " million " + getEn(remainder);
            }
        }
        return stren;
    }
}
全部评论
处理的思路不错,但是Integer.parseInt(str)这句有问题,当str是以","分割的数字时就报错了
点赞 回复 分享
发布于 2023-02-22 10:08 陕西
解答有点问题,在百位为0时,你还拼个zero hundred and xx.
点赞 回复 分享
发布于 2022-06-27 20:42

相关推荐

11-03 14:57
西北大学 营销
Belltrix:其实就是每根转动一定的角度
点赞 评论 收藏
分享
评论
8
3
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务