Home >Java >javaTutorial >How to Convert Numbers to Words in Java?

How to Convert Numbers to Words in Java?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-19 15:13:09530browse

How to Convert Numbers to Words in Java?

How to convert number to words in Java

Converting numbers to words in Java can be a useful task for a variety of applications, such as generating invoices, writing checks, or narrating numerical data.

Built-in Java Libraries

Unfortunately, there is no built-in method in any of the standard Java libraries that specifically converts numbers to words. However, using some creative coding and the libraries that already exist, you can easily write your own method to accomplish this task.

Custom Number to Words Converter

Here is a sample Java method that you can use to convert numbers to words:

public class NumberToWords {

    private static String[] lessThan20 = {"", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen"};
    private static String[] tens = {"", "", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety"};
    private static String[] thousands = {"", "thousand", "million", "billion", "trillion"};

    public static String convert(long number) {
        if (number == 0) {
            return "zero";
        }

        if (number < 0) {
            return "minus " + convert(-number);
        }

        int index = 0;
        String words = "";

        while (number > 0) {
            if (number % 1000 != 0) {
                words = convertLessThanOneThousand(number % 1000) + " " + thousands[index] + " " + words;
            }
            number /= 1000;
            index++;
        }

        return words.trim();
    }

    private static String convertLessThanOneThousand(long number) {
        if (number == 0) {
            return "";
        }

        if (number < 20) {
            return lessThan20[(int) number];
        }

        if (number < 100) {
            return tens[(int) number / 10] + "-" + lessThan20[(int) number % 10];
        }

        return lessThan20[(int) number / 100] + " hundred " + convertLessThanOneThousand(number % 100);
    }

    public static void main(String[] args) {
        System.out.println(convert(1000));
        System.out.println(convert(123456789));
        System.out.println(convert(987654321012L));
    }
}

Usage

To use this method, simply import the NumberToWords class and call the convert method, passing in the number you want to convert as an argument.

import static com.example.converter.NumberToWords.convert;

long myNumber = 123456789;
String words = convert(myNumber);
System.out.println(words); // Output: one hundred twenty three million four hundred fifty six thousand seven hundred eighty nine

Other Approaches

There are also other approaches you can use to convert numbers to words in Java, including using regular expressions or leveraging third-party libraries. However, the custom method provided above is a simple and effective way to get the job done.

The above is the detailed content of How to Convert Numbers to Words in Java?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn