题解 | #学英语#

学英语

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

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息

public class Main {

       String[] belowTen=new String[]{"zero","one","two","three","four","five","six","seven","eight","nine"};

    

        String[] tenToTwenty=new String[]{"ten","eleven","twelve","thirteen","fourteen","fifteen","sixteen","seventeen","eighteen","nineteen"};

        String[] dozen=new String[]{"","ten","twenty","thirty","forty","fifty","sixty","seventy","eighty","ninety"};

    public static void main(String[] args) {

        

        Scanner in = new Scanner(System.in);

        //构建两个数组根据索引输出英文数值

        //每次提取三位数,三位为一组进行解析

        Long num=in.nextLong();

        

        String sNum=String.valueOf(num);

        if(sNum.length()>0&&sNum.length()<=3){

            readNum(sNum,true);

        }

        if(sNum.length()>3&&sNum.length()<=6){

            String s1=sNum.substring(0,sNum.length()-3);

            String s2=sNum.substring(sNum.length()-3,sNum.length());

            readNum(s1,false);

            System.out.print(" thousand ");

            readNum(s2,true);

        }

        if(sNum.length()>6&&sNum.length()<=9){

            String s1=sNum.substring(0,sNum.length()-6);

            String s2=sNum.substring(sNum.length()-6,sNum.length()-3);

            String s3=sNum.substring(sNum.length()-3,sNum.length());

            readNum(s1,false);

            System.out.print(" million ");

            readNum(s2,false);

            System.out.print(" thousand ");

            readNum(s3,true);

        }

    }

    private static void readNum(String s,boolean isBelowThrousand){

            Main m=new Main();

        if(s.length()==3){

            int single=Integer.parseInt(String.valueOf(s.charAt(2)));

            int ten=Integer.parseInt(String.valueOf(s.charAt(1)));

            int hundred=Integer.parseInt(String.valueOf(s.charAt(0)));

            String result=new String();

            if(ten==1){

                result+=(hundred==0?"":m.belowTen[hundred]+" hundred"+((ten!=0||single!=0)?" and":""))+((ten==0?"":((hundred==0?"":" ")+m.tenToTwenty[single])));    

            }else{

            String temp=(ten==0?"":" "+m.dozen[ten]);

            result+=(hundred==0?"":m.belowTen[hundred]+" hundred"+((ten!=0||single!=0)?" and":""))+((ten==0?"":((hundred==0?"":" ")+m.dozen[ten])))+(single==0?"":((hundred==0&&ten==0)?"":" ")+m.belowTen[single]);}

            System.out.print(result);

     

        }

        if(s.length()==2){

            int single=Integer.parseInt(String.valueOf(s.charAt(1)));

            int ten=Integer.parseInt(String.valueOf(s.charAt(0)));

            System.out.print(m.dozen[ten]+(single==0?"":" "+m.belowTen[single]));

        }

        if(s.length()==1){

            int single=Integer.parseInt(String.valueOf(s.charAt(0)));

            System.out.print(m.belowTen[single]);

        }

    }

}

全部评论

相关推荐

美丽的95后准备进厂:第二个是外卖➕点评吧,很眼熟
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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