当前位置: 首页 > 面试题库 >

用Java转换成英语单词

颜哲彦
2023-03-14
问题内容

在这里,我想问些奇怪的事情。

我想问问有什么方法/逻辑可以将整数值转换成包含数字英文单词的字符串值?

例如,用户输入22并获得输出22或2。

谢谢


问题答案:

看看这段代码,它可能就是您想要的。例如,在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"
    }
}


 类似资料:
  • 我需要一个java开源代码,将希伯来文字符串转换成带有英文字符的字符串,例如:将单词 "שלום" 转换成"shalom"

  • 我想一些Python代码,采取在希腊语和转换成英语字符的句子。有人能帮忙吗。

  • 问题内容: 我正在Java应用程序中处理一些英文文本,因此需要阻止它们。例如,从文本“ amenities / amenity”中,我需要获取“ amenit”。 该函数如下所示: 我已经找到了Lucene Analyzer,但是对于我所需要的来说,它看起来太复杂了。 http://lucene.apache.org/java/2_2_0/api/org/apache/lucene/analysi

  • 问题内容: 是否有任何Java API(S),将提供(如英语单词的复数形式的)? 问题答案: Wolfram | Alpha返回给定单词的变形形式列表。 参见以下示例: http://www.wolframalpha.com/input/?i=word+cactus+inflected+forms 这是他们的API: http://products.wolframalpha.com/api/

  • 问题内容: 我认为是非常基本的问题-我正在执行此功能: 问题是输出;例如,我从101的输入中获得337.36080000000004。截断浮点数的适当做法是什么? 正如下面假设的那样,我希望4个有效数字与我的转化率保持一致。 问题答案: 您可以使用NumberFormat实例。 或者,您可以使用DecimalFormat。 后者(DecimalFormat)用于显式地声明格式,而前者(Number

  • 好的,这里有一些东西:我有一个元素 当用户在这个元素中键入内容时,我需要这个元素来强制将键盘布局从任何其他语言切换到英语。我不需要将其发送到服务器。我只需要在输入时强制切换语言。 有人有简单的JS解决方案吗? 这是我一直在想的:理论上。如果我知道它应该转换的语言,那么我就可以写一个JS,把每个符号都替换成英语