用Java转换成英语单词

用Java转换成英语单词,第1张

用Java转换成英语单词

看看这段代码,它可能就是您想要的。例如,在main方法内部,如果有:

System.out.println(convert(22));

输出:

twenty two

编辑 我复制了下面的代码,清理了一下格式(主方法在底部):

import java.text.DecimalFormat;public class EnglishNumberToWords {    private static final String[] tensNames = { "", " ten", " twenty", " thirty", " forty", " fifty", " sixty", " seventy", " eighty", " ninety" };    private static final String[] numNames = { "", " one", " two", " three", " four", " five", " six", " seven", " eight", " nine", " ten", " eleven", " twelve", " thirteen", " fourteen", " fifteen", " sixteen", " seventeen", " eighteen", " nineteen" };    private static String convertLessThanOneThousand(int number) {        String soFar;        if (number % 100 < 20) { soFar = numNames[number % 100]; number /= 100;        } else { soFar = numNames[number % 10]; number /= 10; soFar = tensNames[number % 10] + soFar; number /= 10;        }        if (number == 0) return soFar;        return numNames[number] + " hundred" + soFar;    }    public static String convert(long number) {        // 0 to 999 999 999 999        if (number == 0) { return "zero";        }        String snumber = Long.toString(number);        // pad with "0"        String mask = "000000000000";        DecimalFormat df = new DecimalFormat(mask);        snumber = df.format(number);        // XXXnnnnnnnnn        int billions = Integer.parseInt(snumber.substring(0, 3));        // nnnXXXnnnnnn        int millions = Integer.parseInt(snumber.substring(3, 6));        // nnnnnnXXXnnn        int hundredThousands = Integer.parseInt(snumber.substring(6, 9));        // nnnnnnnnnXXX        int thousands = Integer.parseInt(snumber.substring(9, 12));        String tradBillions;        switch (billions) {        case 0: tradBillions = ""; break;        case 1: tradBillions = convertLessThanOneThousand(billions) + " billion "; break;        default: tradBillions = convertLessThanOneThousand(billions) + " billion ";        }        String result = tradBillions;        String tradMillions;        switch (millions) {        case 0: tradMillions = ""; break;        case 1: tradMillions = convertLessThanOneThousand(millions) + " million "; break;        default: tradMillions = convertLessThanOneThousand(millions) + " million ";        }        result = result + tradMillions;        String tradHundredThousands;        switch (hundredThousands) {        case 0: tradHundredThousands = ""; break;        case 1: tradHundredThousands = "one thousand "; break;        default: tradHundredThousands = convertLessThanOneThousand(hundredThousands)         + " thousand ";        }        result = result + tradHundredThousands;        String tradThousand;        tradThousand = convertLessThanOneThousand(thousands);        result = result + tradThousand;        // remove extra spaces!        return result.replaceAll("^\s+", "").replaceAll("\b\s{2,}\b", " ");    }    public static void main(String[] args) {        System.out.println(convert(22));  // "twenty two"    }}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5438938.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-11
下一篇 2022-12-11

发表评论

登录后才能评论

评论列表(0条)

保存