题解 | #学英语#

学英语

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

从字符串的角度出发,用的是最简单的数据结构,简单易懂

public class Main {
    public static void main(String[] args) {
        Scanner scn = new Scanner(System.in);
        while (scn.hasNext())
        {
            String str = scn.next();
            String s =  ""; //以三位为一段从后往前取子串
            String result = "";
            int i = str.length();
            int flag = 0;//flag用于记录计数单位
            do
            {
                int start, end;
                start = (i - 3) < 0 ? 0 : (i - 3);
                end = i;
                i = i -3;
                s = str.substring(start,end);
                String temp = "";

                //分别str的长度1,2,3讨论
                if(s.length() == 1)
                {
                    switch (s.charAt(0))
                    {
                        case '1':temp += "one ";break;
                        case '2':temp += "two ";break;
                        case '3':temp += "three ";break;
                        case '4':temp += "four ";break;
                        case '5':temp += "five ";break;
                        case '6':temp += "six ";break;
                        case '7':temp += "seven ";break;
                        case '8':temp += "eight ";break;
                        case '9':temp += "nine ";break;


                    }
                }
                else if (s.length() == 2)
                {
                    //十位是一需要特殊考虑
                    if (s.charAt(0) == '1')
                    {
                        switch (s)
                        {
                            case "10":temp += "ten ";break;
                            case "11":temp += "eleven ";break;
                            case "12":temp += "twelve ";break;
                            case "13":temp += "thirteen ";break;
                            case "14":temp += "fourteen ";break;
                            case "15":temp += "fifteen ";break;
                            case "16":temp += "sixteen ";break;
                            case "17":temp += "seventeen ";break;
                            case "18":temp += "eighteen ";break;
                            case "19":temp += "nineteen ";break;


                        }
                    }
                    else
                    {
                        switch (s.charAt(0))
                        {
                            case '2':temp += "twenty ";break;
                            case '3':temp += "thirty ";break;
                            case '4':temp += "forty ";break;
                            case '5':temp += "fifty ";break;
                            case '6':temp += "sixty ";break;
                            case '7':temp += "seventy ";break;
                            case '8':temp += "eighty ";break;
                            case '9':temp += "ninety ";break;


                        }
                        switch (s.charAt(1))
                        {

                            case '1':temp += "one ";break;
                            case '2':temp += "two ";break;
                            case '3':temp += "three ";break;
                            case '4':temp += "four ";break;
                            case '5':temp += "five ";break;
                            case '6':temp += "six ";break;
                            case '7':temp += "seven ";break;
                            case '8':temp += "eight ";break;
                            case '9':temp += "nine ";break;
                        }
                    }
                }
                else if((s.length() == 3))
                {
                    switch (s.charAt(0))
                    {
                        case '1':temp += "one hundred ";break;
                        case '2':temp += "two hundred ";break;
                        case '3':temp += "three hundred ";break;
                        case '4':temp += "four hundred ";break;
                        case '5':temp += "five hundred ";break;
                        case '6':temp += "six hundred ";break;
                        case '7':temp += "seven hundred ";break;
                        case '8':temp += "eight hundred ";break;
                        case '9':temp += "nine hundred ";break;
                    }
                    if (s.substring(1).equals("00"))
                    {
                        ;
                    }
                    else
                    {
                        //当不为整百数时,才需要加”and“
                        if (s.charAt(0) != '0')
                        {
                            temp += "and ";
                        }
                        if (s.charAt(1) == '0')
                        {
                            switch (s.charAt(2))
                            {
                                case '1':temp += "one ";break;
                                case '2':temp += "two ";break;
                                case '3':temp += "three ";break;
                                case '4':temp += "four ";break;
                                case '5':temp += "five ";break;
                                case '6':temp += "six ";break;
                                case '7':temp += "seven ";break;
                                case '8':temp += "eight ";break;
                                case '9':temp += "nine ";break;
                            }
                        }
                        else
                        {
                            if (s.charAt(1) == '1')
                            {
                                switch (s.substring(1))
                                {
                                    case "10":temp += "ten ";break;
                                    case "11":temp += "eleven ";break;
                                    case "12":temp += "twelve ";break;
                                    case "13":temp += "thirteen ";break;
                                    case "14":temp += "fourteen ";break;
                                    case "15":temp += "fifteen ";break;
                                    case "16":temp += "sixteen ";break;
                                    case "17":temp += "seventeen ";break;
                                    case "18":temp += "eighteen ";break;
                                    case "19":temp += "nineteen ";break;


                                }
                            }
                            else
                            {
                                switch (s.charAt(1))
                                {
                                    case '2':temp += "twenty ";break;
                                    case '3':temp += "thirty ";break;
                                    case '4':temp += "forty ";break;
                                    case '5':temp += "fifty ";break;
                                    case '6':temp += "sixty ";break;
                                    case '7':temp += "seventy ";break;
                                    case '8':temp += "eighty ";break;
                                    case '9':temp += "ninety ";break;


                                }

                                switch (s.charAt(2))
                                {

                                    case '1':temp += "one ";break;
                                    case '2':temp += "two ";break;
                                    case '3':temp += "three ";break;
                                    case '4':temp += "four ";break;
                                    case '5':temp += "five ";break;
                                    case '6':temp += "six ";break;
                                    case '7':temp += "seven ";break;
                                    case '8':temp += "eight ";break;
                                    case '9':temp += "nine ";break;
                                }
                            }
                        }

                    }
                }

                //flag用于记录计数单位
                switch (flag )
                {
                    case 0:;break;
                    case 1:temp += "thousand ";break;
                    case 2:temp += "million ";break;
                    case 3:temp += "billion ";break;
                }
                flag++;
                result = temp + result;
            }while (i > 0);
            System.out.println(result);
        }
    }
}

全部评论

相关推荐

07-17 12:14
门头沟学院 Java
点赞 评论 收藏
分享
06-25 09:33
厦门大学 Java
程序员饺子:现在日常估计没啥hc了,等到八月多估计就慢慢有了。双九✌🏻不用焦虑的
投递快手等公司7个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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