Prepend initialize string as " One" with space ahead.
1.static final level2= {""," Thousand"," Million"," Billion"}
while( num != 0)
if ( num % 1000 != 0) {
s = covert(num%1000) + level2[level] + s;
s = covert(num%1000) + level2[level] + s;
}
level++;
num/=1000;
level++;
num/=1000;
2.
static final level0 = {"", " One"," Two"," Three"," Four"," Five"," Six"," Seven"," Eight"," Nine"," Ten"," Eleven"," Twelve"," Thirteen"," Fourteen"," Fifteen"," Sixteen"," Seventeen"," Eighteen"," Nineteen"}
static final level1 = {" Twenty"," Thirty"," Forty"," Fifty"," Sixty"," Seventy"," Eighty"," Ninety"}
if ( num > 99 ) {
if ( num > 99 ) {
res = leve0[num/100] + " Hundred";
}
num%= 100;
if ( num < 20 )
if ( num < 20 )
res = res + level0[num];
else
res = res + level1[num/10 -2] + level0[num%10];
1,234 => "One Thousand, Two Hundred and Thirty Four"
1,000,999 => "One Million Nine Hundred Ninety Nine"
2,147,483,647 => "Two Billion 147 Million 483 Thousand 647"
// NOTE :1 000 999
1,234 => "One Thousand, Two Hundred and Thirty Four"
1,000,999 => "One Million Nine Hundred Ninety Nine"
2,147,483,647 => "Two Billion 147 Million 483 Thousand 647"
// NOTE :1 000 999
if ( num % divisor != 0) {
s = covert(num%divisor) + level2[level] + s;
}
2. Implementation
2. Implementation
public static String numToString(int num)
{
static final level0 = {"", " One"," Two"," Three"," Four"," Five"," Six"," Seven"," Eight"," Nine"," Ten"," Eleven"," Twelve"," Thirteen"," Fourteen"," Fifteen"," Sixteen"," Seventeen"," Eighteen"," Nineteen"}
static final level1 = {" Twenty"," Thirty"," Forty"," Fifty"," Sixty"," Seventy"," Eighty"," Ninety"}
//static final level2= {"Thousand ","Million ","Billion "}
// NOTE: loop every time, so we need to set up first unit as ""
static final level2= {""," Thousand"," Million"," Billion"}
// validate the input
if (num == 0)
return "Zero";
int divisor = 1000;
//int val = num % divisor;
//String s = convert(val);
String res = "";
int level = 0;
//while (num / divisor > 0)
while( num != 0)
{
// NOTE :1 000 999
if ( num % divisor != 0)
{
res = covert(num%divisor) + level2[level] + res;
}
num/= divisor;
}
return res.trim();
}
private String convert(int num)
{
String res="";
if ( num > 99 )
{
res = leve0[num/100] + " Hundred";
}
num%= 100;
if ( num < 20 )
res = res + level0[num];
else
res = res + level1[num/10 -2] + level0[num%10];
return res;
}
3. Simialr ones
No comments:
Post a Comment