Last active
August 8, 2019 17:48
-
-
Save vinaypuranik/31dd016b00419e452c4475af7b1ec9c2 to your computer and use it in GitHub Desktop.
Checkwriter for Number to Euros representation.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class CheckWriter { | |
public static String BASIC_MONEYTARY_UNIT = " Euros"; | |
public static String MONEYTARY_UNIT = " cents"; | |
public static int MILLIONS = 1000000; | |
public static int THOUSANDS = 1000; | |
public static void main(String[] args) { | |
System.out.println(numberToWords("999999.00")); | |
System.out.println(numberToWords("22930.10")); | |
System.out.println(numberToWords("1999.01")); | |
System.out.println(numberToWords("199.20")); | |
System.out.println(numberToWords("0")); | |
System.out.println(numberToWords("10")); | |
System.out.println(numberToWords("1200")); | |
System.out.println(numberToWords("112.10")); | |
System.out.println(numberToWords("874327.9")); | |
System.out.println(numberToWords("978")); | |
System.out.println(numberToWords("1.01")); | |
} | |
public static String numberToWords(String number) { | |
int indexOfDecimalPoint = number.indexOf('.'); | |
int numberBeforeDecimalPoint; | |
int numberAfterDecimalPoint; | |
if(indexOfDecimalPoint != -1) { | |
numberBeforeDecimalPoint = Integer.parseInt(number.substring(0, indexOfDecimalPoint)); | |
numberAfterDecimalPoint = Integer.parseInt(number.substring(indexOfDecimalPoint+1, number.length())); | |
} else { | |
numberBeforeDecimalPoint = Integer.parseInt(number); | |
numberAfterDecimalPoint = 0; | |
} | |
int million = numberBeforeDecimalPoint/MILLIONS; | |
int thousand = (numberBeforeDecimalPoint - million * MILLIONS)/THOUSANDS; | |
int rest = numberBeforeDecimalPoint - million * MILLIONS - thousand * THOUSANDS ; | |
String euros = ""; | |
String cents = ""; | |
if(million != 0) { | |
if(!euros.isEmpty()) | |
euros += " "; | |
euros += three(million) + " Million"; | |
} | |
if(thousand != 0) { | |
if(!euros.isEmpty()) | |
euros+= " "; | |
euros +=three(thousand) + " Thousand"; | |
} | |
if(rest != 0) { | |
if( !euros.isEmpty()) | |
euros+= " "; | |
euros += three(rest); | |
} | |
if(numberAfterDecimalPoint != 0) { | |
if(!cents.isEmpty()) | |
cents+= " "; | |
cents += three(numberAfterDecimalPoint); | |
} | |
if(numberBeforeDecimalPoint == 0) { | |
euros += "Zero"; | |
} | |
if(numberAfterDecimalPoint == 0) { | |
cents += "Zero"; | |
} | |
return euros + BASIC_MONEYTARY_UNIT + " and " + cents + MONEYTARY_UNIT; | |
} | |
public static String one(int num) { | |
switch(num) { | |
case 1: return "One"; | |
case 2: return "Two"; | |
case 3: return "Three"; | |
case 4: return "Four"; | |
case 5: return "Five"; | |
case 6: return "Six"; | |
case 7: return "Seven"; | |
case 8: return "Eight"; | |
case 9: return "Nine"; | |
} | |
return ""; | |
} | |
public static String twoLessThan20(int num) { | |
switch(num) { | |
case 10: return "Ten"; | |
case 11: return "Eleven"; | |
case 12: return "Twelve"; | |
case 13: return "Thirteen"; | |
case 14: return "Fourteen"; | |
case 15: return "Fifteen"; | |
case 16: return "Sixteen"; | |
case 17: return "Seventeen"; | |
case 18: return "Eighteen"; | |
case 19: return "Nineteen"; | |
} | |
return ""; | |
} | |
public static String ten(int num) { | |
switch(num) { | |
case 2: return "Twenty"; | |
case 3: return "Thirty"; | |
case 4: return "Forty"; | |
case 5: return "Fifty"; | |
case 6: return "Sixty"; | |
case 7: return "Seventy"; | |
case 8: return "Eighty"; | |
case 9: return "Ninety"; | |
} | |
return ""; | |
} | |
public static String three(int num) { | |
int hundred = num / 100; | |
int rest = num - hundred * 100; | |
String res = ""; | |
if (hundred*rest != 0) | |
res = one(hundred) + " Hundred " + two(rest); | |
else if ((hundred == 0) && (rest != 0)) | |
res = two(rest); | |
else if ((hundred != 0) && (rest == 0)) | |
res = one(hundred) + " Hundred"; | |
return res; | |
} | |
public static String two(int num) { | |
if (num == 0) | |
return ""; | |
else if (num < 10) | |
return one(num); | |
else if (num < 20) | |
return twoLessThan20(num); | |
else { | |
int tenner = num / 10; | |
int rest = num - tenner * 10; | |
if (rest != 0) | |
return ten(tenner) + " " + one(rest); | |
else | |
return ten(tenner); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Output:
Nine Hundred Ninety Nine Thousand Nine Hundred Ninety Nine Euros and Zero cents
Twenty Two Thousand Nine Hundred Thirty Euros and Ten cents
One Thousand Nine Hundred Ninety Nine Euros and One cents
One Hundred Ninety Nine Euros and Twenty cents
Zero Euros and Zero cents
Ten Euros and Zero cents
One Thousand Two Hundred Euros and Zero cents
One Hundred Twelve Euros and Ten cents
Eight Hundred Seventy Four Thousand Three Hundred Twenty Seven Euros and Nine cents
Nine Hundred Seventy Eight Euros and Zero cents
One Euros and One cents