Skip to content

Instantly share code, notes, and snippets.

@sachsgit
Created March 3, 2021 15:09
Show Gist options
  • Save sachsgit/914fb6c0bf9a19f085d75d5b7344d364 to your computer and use it in GitHub Desktop.
Save sachsgit/914fb6c0bf9a19f085d75d5b7344d364 to your computer and use it in GitHub Desktop.
Java Code To Convert Integer To Word-Form
package utilities.common;
import java.text.NumberFormat;
import java.util.Random;
import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import com.google.common.base.Joiner;
// Original Source URL:
// https://javahungry.blogspot.com/2014/05/convert-math-number-to-equivalent-readable-word-in-java-code-with-example.html
public class NumberToWords {
private static final Logger logger = LogManager.getLogger(NumberToWords.class);
private static final String[] specialNames = { "", " thousand,", " million,", " billion,",
" trillio,n", " quadrillion,", " quintillion," };
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 current;
if (number % 100 < 20) {
current = numNames[number % 100];
number /= 100;
} else {
current = numNames[number % 10];
number /= 10;
current = tensNames[number % 10] + current;
number /= 10;
}
if (number == 0)
return current;
return numNames[number] + " hundred" + current;
}
public static String convert(int number) {
if (number == 0) {
return "zero";
}
String prefix = "";
if (number < 0) {
number = -number;
prefix = "Minus";
}
StringBuilder current = new StringBuilder();
int place = 0;
do {
int n = number % 1000;
if (n != 0) {
String s = convertLessThanOneThousand(n);
current.insert(0, s + specialNames[place]);
}
++place;
number /= 1000;
} while (number > 0);
String[] phrases = current.toString().split(" ");
String[] newPhrase = new String[phrases.length];
for (int i = 0; i < phrases.length; ++i)
newPhrase[i] = StringUtils.capitalize(phrases[i]);
String phrase = Joiner.on(" ").join(newPhrase);
return (prefix + phrase).trim();
}
public static void main(String[] args) {
Random r = new Random();
int i = r.nextInt();
String s =
String.format("\"%s\" is \"%s\"", NumberFormat.getInstance().format(i), convert(i));
logger.info("{}", s);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment