题解 | #学英语#

学英语

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

import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {//写了4个小时的屎山代码,请慎重查看
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()) {
            String s = scanner.nextLine();
            String[] strings = spThree(s);
//            System.out.println(Arrays.toString(strings));
            ArrayList<String> sgood = new ArrayList<>();
            String zs[]=new String[]{"","thousand","million","billion"};
            for (int i = 0; i <strings.length; i++) {
                String s1 = nTl(strings[i]);
//                System.out.println(s1);
                if (s1.equals(" ")||s1.equals("")){
                    continue;
                }
                sgood.add(s1+" "+zs[i]);
            }
//            System.out.println(sgood);
            String se="";
            for (int i = sgood.size()-1; i >=0; i--) {
                se=se+sgood.get(i)+" ";
            }
            System.out.println(se);
        }
    }

    public static String[] spThree(String s) {//拆分数字方法
        char[] cy = s.toCharArray();
        String ss = "";
        for (int i = cy.length - 1; i >= 0; i--) {
            ss = ss + cy[i];
        }
        ArrayList<String> st = new ArrayList<>();
        for (int i = 0; i < ss.length(); i++) {
            String[] split = ss.split("");
            if ((i + 1) % 3 == 0) {
                st.add(split[i]);
                st.add(" ");
            } else {
                st.add(split[i]);
            }
        }
        String s1 = "";
        for (int i = 0; i < st.size(); i++) {
            s1 = s1 + st.get(i);
        }
        String[] split = s1.split(" ");
        for (int i = 0; i < split.length; i++) {
            String s2 = split[i];
            String s3 = "";
            String[] split1 = s2.split("");
            for (int j = split1.length - 1; j >= 0; j--) {
                s3 = s3 + split1[j];
            }
            split[i] = s3;
        }
        return split;
    }

    public static String nTl(String s) {//分类
        String s1 = "";
        String s2 = "";
        String s3 = "";
        if (s.length() == 1) {
            switch (s) {
                case "0":
                    s1 = "zero";
                    break;
                case "1":
                    s1 = "one";
                    break;
                case "2":
                    s1 = "two";
                    break;
                case "3":
                    s1 = "three";
                    break;
                case "4":
                    s1 = "four";
                    break;
                case "5":
                    s1 = "five";
                    break;
                case "6":
                    s1 = "six";
                    break;
                case "7":
                    s1 = "seven";
                    break;
                case "8":
                    s1 = "eight";
                    break;
                case "9":
                    s1 = "nine";
                    break;
            }
            return s1;
        } else if (s.length() == 2||(s.length()==3 && String.valueOf(s.charAt(0)).equals("0"))) {
            if (s.length()==3){
                s=s.substring(1);
            }
            if (String.valueOf(s.charAt(0)).equals("1")) {
                switch (String.valueOf(s.charAt(1))) {
                    case "0":
                        s2 = "ten";
                        break;
                    case "1":
                        s2 = "eleven";
                        break;
                    case "2":
                        s2 = "twelve";
                        break;
                    case "3":
                        s2 = "thirteen";
                        break;
                    case "4":
                        s2 = "fourteen";
                        break;
                    case "5":
                        s2 = "fifteen";
                        break;
                    case "6":
                        s2 = "sixteen";
                        break;
                    case "7":
                        s2 = "seventeen";
                        break;
                    case "8":
                        s2 = "eighteen";
                        break;
                    case "9":
                        s2 = "nineteen";
                        break;
                }
                return s2;
            } else {
                switch (String.valueOf(s.charAt(0))) {
                    case "2":
                        s2 = "twenty";
                        break;
                    case "3":
                        s2 = "thirty";
                        break;
                    case "4":
                        s2 = "forty";
                        break;
                    case "5":
                        s2 = "fifty";
                        break;
                    case "6":
                        s2 = "sixty";
                        break;
                    case "7":
                        s2 = "seventy";
                        break;
                    case "8":
                        s2 = "eighty";
                        break;
                    case "9":
                        s2 = "ninety";
                        break;
                }
                switch (String.valueOf(s.charAt(1))) {
                    case "1":
                        s1 = "one";
                        break;
                    case "2":
                        s1 = "two";
                        break;
                    case "3":
                        s1 = "three";
                        break;
                    case "4":
                        s1 = "four";
                        break;
                    case "5":
                        s1 = "five";
                        break;
                    case "6":
                        s1 = "six";
                        break;
                    case "7":
                        s1 = "seven";
                        break;
                    case "8":
                        s1 = "eight";
                        break;
                    case "9":
                        s1 = "nine";
                        break;
                }
                if (s1.equals("")){
                    return s2;
                }
                if (s2.equals("")){
                    return s1;
                }
                return s2+" "+s1;
            }
        } else if (s.length() == 3) {
            if (!String.valueOf(s.charAt(0)).equals("0")) {
                switch (String.valueOf(s.charAt(0))) {
                    case "1":
                        if (!String.valueOf(s.charAt(2)).equals("0")||(Integer.valueOf(s.substring(1))%10==0)) {
                            s3 = "one hundred and";
                        }
                        if (Integer.valueOf(s)%100==0){
                            s3 = "one hundred";
                        }
                        break;
                    case "2":
                        if (!String.valueOf(s.charAt(2)).equals("0")||(Integer.valueOf(s.substring(1))%10==0)) {
                            s3 = "two hundred and";
                        }
                        if (Integer.valueOf(s)%100==0){
                            s3 = "two hundred";
                        }
                        break;
                    case "3":
                        if (!String.valueOf(s.charAt(2)).equals("0")||(Integer.valueOf(s.substring(1))%10==0)) {
                            s3 = "three hundred and";
                        }
                        if (Integer.valueOf(s)%100==0){
                            s3 = "three hundred";
                        }
                        break;
                    case "4":
                        if (!String.valueOf(s.charAt(2)).equals("0")||(Integer.valueOf(s.substring(1))%10==0)) {
                            s3 = "four hundred and";
                        }
                        if (Integer.valueOf(s)%100==0){
                            s3 = "four hundred";
                        }
                        break;
                    case "5":
                        if (!String.valueOf(s.charAt(2)).equals("0")||(Integer.valueOf(s.substring(1))%10==0)) {
                            s3 = "five hundred and";
                        }
                        if (Integer.valueOf(s)%100==0){
                            s3 = "five hundred";
                        }
                        break;
                    case "6":
                        if (!String.valueOf(s.charAt(2)).equals("0")||(Integer.valueOf(s.substring(1))%10==0)) {
                            s3 = "six hundred and";
                        }
                        if (Integer.valueOf(s)%100==0){
                            s3 = "six hundred";
                        }
                        break;
                    case "7":
                        if (!String.valueOf(s.charAt(2)).equals("0")||(Integer.valueOf(s.substring(1))%10==0)) {
                            s3 = "seven hundred and";
                        }
                        if (Integer.valueOf(s)%100==0){
                            s3 = "seven hundred";
                        }
                        break;
                    case "8":
                        if (!String.valueOf(s.charAt(2)).equals("0")||(Integer.valueOf(s.substring(1))%10==0)) {
                            s3 = "eight hundred and";
                        }
                        if (Integer.valueOf(s)%100==0){
                            s3 = "eight hundred";
                        }
                        break;
                    case "9":
                        if (!String.valueOf(s.charAt(2)).equals("0")||(Integer.valueOf(s.substring(1))%10==0)) {
                            s3 = "nine hundred and";
                        }
                        if (Integer.valueOf(s)%100==0){
                            s3 = "nine hundred";
                        }
                }
                if (String.valueOf(s.charAt(1)).equals("1")) {
                    switch (String.valueOf(s.charAt(2))) {
                        case "0":
                            s2 = "ten";
                            break;
                        case "1":
                            s2 = "eleven";
                            break;
                        case "2":
                            s2 = "twelve";
                            break;
                        case "3":
                            s2 = "thirteen";
                            break;
                        case "4":
                            s2 = "fourteen";
                            break;
                        case "5":
                            s2 = "fifteen";
                            break;
                        case "6":
                            s2 = "sixteen";
                            break;
                        case "7":
                            s2 = "seventeen";
                            break;
                        case "8":
                            s2 = "eighteen";
                            break;
                        case "9":
                            s2 = "nineteen";
                            break;
                    }
                    return s3+" "+s2;
                } else {
                    switch (String.valueOf(s.charAt(1))) {
                        case "2":
                            s2 = "twenty";
                            break;
                        case "3":
                            s2 = "thirty";
                            break;
                        case "4":
                            s2 = "forty";
                            break;
                        case "5":
                            s2 = "fifty";
                            break;
                        case "6":
                            s2 = "sixty";
                            break;
                        case "7":
                            s2 = "seventy";
                            break;
                        case "8":
                            s2 = "eighty";
                            break;
                        case "9":
                            s2 = "ninety";
                            break;
                    }
                    switch (String.valueOf(s.charAt(2))) {
                        case "1":
                            s1 = "one";
                            break;
                        case "2":
                            s1 = "two";
                            break;
                        case "3":
                            s1 = "three";
                            break;
                        case "4":
                            s1 = "four";
                            break;
                        case "5":
                            s1 = "five";
                            break;
                        case "6":
                            s1 = "six";
                            break;
                        case "7":
                            s1 = "seven";
                            break;
                        case "8":
                            s1 = "eight";
                            break;
                        case "9":
                            s1 = "nine";
                            break;
                    }
                    if (!s2.equals("0")&&!s2.equals("")) {
                        return s3 + " " + s2 + " " + s1;
                    } else if (s1.equals("")) {
                        return s3;
                    } else {
                        return s3 + " " + s1;
                    }
                }
            }
        }
        return null;
    }
}

全部评论

相关推荐

11-27 17:08
已编辑
牛客_产品运营部_私域运营
腾讯 普通offer 24k~26k * 15,年包在36w~39w左右。
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务