Skip to content

Instantly share code, notes, and snippets.

@ClearNB
Created January 11, 2019 06:13
Show Gist options
  • Save ClearNB/4b8589ac8f15aa074b09fbebbae92e97 to your computer and use it in GitHub Desktop.
Save ClearNB/4b8589ac8f15aa074b09fbebbae92e97 to your computer and use it in GitHub Desktop.
Number to Words (Java 8 ver) Sample by ClearNB
import java.util.*;
public class Solution {
private static final String[] FDigitsData = {"", "One ", "Two ", "Three ", "Four ", "Five ", "Six ", "Seven ", "Eight ", "Nine "};
private static final String[] SDigitsData = {"Ten ", "Eleven ", "Twelve ", "Thirteen ", "Fourteen ", "Fifteen ", "Sixteen ", "Seventeen ", "Eighteen ", "Nineteen "};
private static final String[] TensData = {"", "", "Twenty ", "Thirty ", "Forty ", "Fifty ", "Sixty ", "Seventy ", "Eighty ", "Ninety "};
private static final String[] THData = {"", "Thousand ", "Million ", "Billion ", "Trillion "};
static void printNumber(int ThirdDigitData, int SecondDigitData, int FirstDigitData, int THIndex) {
if(ThirdDigitData != 0) {
print(FDigitsData[ThirdDigitData] + "Hundred ");
}
if(SecondDigitData == 1) {
print(SDigitsData[FirstDigitData]);
} else if(SecondDigitData > 1) {
print(TensData[SecondDigitData] + FDigitsData[FirstDigitData]);
} else {
print(FDigitsData[FirstDigitData]);
}
if((ThirdDigitData + SecondDigitData + FirstDigitData) != 0) {
print(THData[THIndex]);
}
}
static void print(String str) {
System.out.print(str);
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int T = sc.nextInt();
for(int a0 = 0; a0 < T; a0++) {
String N = sc.next();
ArrayList<Integer> NDatas = new ArrayList<Integer>();
int NSize = N.length();
if((3 - N.length() % 3) != 3) {
NSize += 3 - N.length() % 3;
}
int Ncnt = NSize - N.length();
int Nsum = 0;
for(int i = 0; i < NSize; i++) {
if(Ncnt - i > 0) {
NDatas.add(0);
} else {
NDatas.add(Integer.parseInt(N.substring(i - Ncnt, (i + 1) - Ncnt)));
}
Nsum += NDatas.get(i);
}
if(Nsum != 0) {
int j = 0;
int Ncnt2 = NSize / 3;
for(int i = 0; i < NDatas.size(); i = i + 3) {
j++;
printNumber(NDatas.get(i), NDatas.get(i + 1), NDatas.get(i + 2), Ncnt2 - j);
}
} else {
print("Zero");
}
System.out.println();
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment