nl.siegmann.epublib.utilities.NumberSayer Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of epublib-tools Show documentation
Show all versions of epublib-tools Show documentation
A java library for reading/writing/manipulating epub files
The newest version!
package nl.siegmann.epublib.utilities;
public class NumberSayer {
private static final String[] NUMBER_BELOW_20 = new String[] {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "nineteen"};
private static final String[] DECIMALS = new String[] {"zero", "ten", "twenty", "thirty", "fourty", "fifty", "sixty", "seventy", "eighty", "ninety"};
private static final String[] ORDER_NUMBERS = new String[] {"hundred", "thousand", "million", "billion", "trillion"};
public static String getNumberName(int number) {
if(number < 0) {
throw new IllegalArgumentException("Cannot handle numbers < 0 or > " + Integer.MAX_VALUE);
}
if(number < 20) {
return NUMBER_BELOW_20[number];
}
if(number < 100) {
return DECIMALS[number / 10] + NUMBER_BELOW_20[number % 10];
}
if(number >= 100 && number < 200) {
return ORDER_NUMBERS[0] + getNumberName(number - 100);
}
if(number < 1000) {
return NUMBER_BELOW_20[number / 100] + ORDER_NUMBERS[0] + getNumberName(number % 100);
}
throw new IllegalArgumentException("Cannot handle numbers < 0 or > " + Integer.MAX_VALUE);
}
}