Newsletter sign-up
View all newsletters

Enterprise Java Newsletter
Stay up to date on the latest tutorials and Java community news posted on JavaWorld

JavaWorld Daily Brew

Number to Arabic words Convertion


Back to:
www.javaworld.com/javatips/jw-javatip41.html
.

package com.distinct.rpfs.view.utils;

import java.util.ResourceBundle;

public class NumToArabicConverter {
    public NumToArabicConverter() {
    }

    private String convert1(String num) {

        String sOns = "", sTens = "", sHunds = "", sThousns = "", sTenThousns = "", sHundsThousns = "", sMillion =
            "", sTenMillion = "", sHundsMillion = "";
        if (Float.parseFloat(num) <= 20)
            return GetWords(num);
        for (int i = num.length() - 1; i >= 0; i--) {
            char[] numArray = num.toCharArray();
            System.out.println("iiiiiiiiiiiiiiiii:" + i);
            switch (i) {
            case 0:
                sOns = String.valueOf(numArray[num.length() - 1 - i]);               
                if (getInteger(sOns) <= 0)
                    sOns = "";
                break;
            case 1:
                sTens = String.valueOf((getInteger(String.valueOf(numArray[num.length() - 1 - i])) * 10));
                if (getInteger(sTens) <= 0)
                    sTens = "";
                break;
            case 2:
                sHunds = String.valueOf((getInteger(String.valueOf(numArray[num.length() - 1 - i])) * 100));
                if (getInteger(sHunds) <= 0)
                    sHunds = "";
                break;
            case 3:
                sThousns = String.valueOf((getInteger(String.valueOf(numArray[num.length() - 1 - i])) * 1000));
                if (getInteger(sThousns) <= 0)
                    sThousns = "";
                break;
            case 4:
                sTenThousns = String.valueOf((getInteger(String.valueOf(numArray[num.length() - 1 - i])) * 10000));
                if (getInteger(sTenThousns) <= 0)
                    sTenThousns = "";
                break;
            case 5:
                sHundsThousns = String.valueOf((getInteger(String.valueOf(numArray[num.length() - 1 - i])) * 100000));
                if (Float.parseFloat(sHundsThousns) <= 0)
                    sHundsThousns = "";
                break;
            case 6:
                sMillion = String.valueOf((getInteger(String.valueOf(numArray[num.length() - 1 - i])) * 1000000));
                if (Float.parseFloat(sMillion) <= 0)
                    sMillion = "";
                break;
            case 7:
                sTenMillion = String.valueOf((getInteger(String.valueOf(numArray[num.length() - 1 - i])) * 10000000));
                if (Float.parseFloat(sTenMillion) <= 0)
                    sTenMillion = "";
                break;
            case 8:
                sHundsMillion =
                        String.valueOf((getInteger(String.valueOf(numArray[num.length() - 1 - i])) * 100000000));
                if (Float.parseFloat(sHundsMillion) <= 0)
                    sHundsMillion = "";
                break;
            }
        }

        String sConj = GetWords("AND");
        sConj = sConj + " ";
        for (int i = 0; i < num.length(); i++) {
            System.out.println("iiiiiiiiiiiiiiiii:" + i);
            switch (i) {
            case 0:              
                if (getInteger(sOns) > 0) {
                    if (getInteger(sTens) > 0 && (getInteger(sTens) + getInteger(sOns)) <= 20) {
                        sTens = String.valueOf(getInteger(sTens) + getInteger(sOns));
                        sOns = "";
                    } else {
                        sOns = GetWords(sOns);
                        if (sTens != "")
                            sOns = sOns + " " + sConj;
                    }
                }
                break;
            case 1:
                if (getInteger(sTens) > 0) {
                    sTens = GetWords(sTens);
                }
                break;
            case 2:
                if (getInteger(sHunds) > 0) {
                    sHunds = GetWords(sHunds);
                    if (sOns != "" || sTens != "")
                        sHunds = sHunds + " " + sConj;
                }
                break;
            case 3:
                if (getInteger(sThousns) > 0) {
                    if (getInteger(sTenThousns) > 0) {
                        sTenThousns = String.valueOf(getInteger(sTenThousns) + getInteger(sThousns));
                        sThousns = "";
                    } else {
                        if (getInteger(sThousns) < 3000)
                            sThousns = GetWords(sThousns);
                        else
                            sThousns = GetWords((getInteger(sThousns) / 1000)) + " " + GetWords("1000");
                        if (sOns != "" || sTens != "" || sHunds != "")
                            sThousns = sThousns + " " + sConj;
                    }
                }
                break;
            case 4:
                if (getInteger(sTenThousns) > 0) {
                    String sTens_10000 = String.valueOf(getInteger(sTenThousns) / 1000);
                    char[] sTens_10000_array = sTens_10000.toCharArray();
                    if (getInteger(sTens_10000) <= 20) {
                        sTenThousns = GetWords(sTens_10000) + " " + GetWords("1000");
                        if (sOns != "" || sTens != "" || sHunds != "")
                            sTenThousns = sTenThousns + " " + sConj;
                    } else {
                        sTenThousns =
                                GetWords(String.valueOf(sTens_10000_array[1])) + " " + sConj + " " + GetWords((String.valueOf(sTens_10000_array[0]) +
                                                                                                               "0")) +
                                " " + GetWords("1000");
                        if (sOns != "" || sTens != "" || sHunds != "")
                            sTenThousns = sTenThousns + " " + sConj;
                    }
                }
                break;
            case 5:
                if (getInteger(sHundsThousns) > 0) {
                    sHundsThousns = GetWords((getInteger(sHundsThousns) / 1000));
                    if (sTenThousns == "")
                        sHundsThousns += " " + GetWords("1000");
                    if (sTenThousns != "" || sThousns != "" || sHunds != "" || sTens != "" || sOns != "")
                        sHundsThousns = sHundsThousns + " " + sConj;
                }
                break;
            case 6:
                if (getInteger(sMillion) > 0) {
                    if (getInteger(sTenMillion) > 0) {
                        sTenMillion = String.valueOf(getInteger(sTenMillion) + getInteger(sMillion));
                        sMillion = "";
                    } else {
                        if (sMillion.equals("1000000"))
                            sMillion = GetWords("1000000");
                        else
                            sMillion = GetWords((getInteger(sMillion) / 1000000)) + " " + GetWords("1000000");
                        if (sHundsThousns != "" || sTenThousns != "" || sThousns != "" || sHunds != "" ||
                            sTens != "" || sOns != "")
                            sMillion = sMillion + " " + sConj;
                    }
                }
                break;
            case 7:
                if (getInteger(sTenMillion) > 0) {
                    String sTens_10000000 = String.valueOf(getInteger(sTenMillion) / 1000000);
                    char[] sTens_10000000_array = sTens_10000000.toCharArray();
                    if (getInteger(sTens_10000000) <= 20) {
                        sTenMillion = GetWords(sTens_10000000) + " " + GetWords("1000000");
                        if (sHundsThousns != "" || sTenThousns != "" || sThousns != "" || sHunds != "" ||
                            sTens != "" || sOns != "")
                            sTenMillion = sTenMillion + " " + sConj;
                    } else {
                        sTenMillion =
                                GetWords((sTens_10000000_array[1] + 0)) + " " + sConj + " " + GetWords(String.valueOf(sTens_10000000_array[0])) +
                                " " + GetWords("1000000"); //  GetWords((getInteger(sTenThousns) / 1000).ToString())
                        if (sHundsThousns != "" || sTenThousns != "" || sThousns != "" || sHunds != "" ||
                            sTens != "" || sOns != "")
                            sTenMillion = sTenMillion + " " + sConj;
                    }
                }
                break;
            case 8:
                if (getInteger(sHundsMillion) > 0) {
                    sHundsMillion = GetWords((getInteger(sHundsMillion) / 1000000));
                    if (sTenMillion == "")
                        sHundsMillion += " " + GetWords("1000000");
                    if (sTenMillion != "" || sMillion != "" || sTenThousns != "" || sThousns != "" || sHunds != "" ||
                        sTens != "" || sOns != "")
                        sHundsMillion = sHundsMillion + " " + sConj;
                }
                break;
            }
        }
        //return sTens + "" + sOns + "" + sHunds + "" + sThousns + "" + sTenThousns + "" + sHundsThousns + "" + sMillion + "" + sTenMillion + "" + sHundsMillion;
        //return sHundsMillion + " " + sTenMillion + " " + sMillion + " " + sHundsThousns + " " + sTenThousns + " " + sThousns + " " + sHunds + " " + sOns + " " + sTens ;
        return sHundsMillion + "" + sMillion + "" + sTenMillion + "" + sHundsThousns + "" + sThousns + "" +
            sTenThousns + "" + sHunds + "" + sOns + "" + sTens;
    }

    private String convert(String num) {

        String sOns = "", sTens = "", sHunds = "", sThousns = "", sTenThousns = "", sHundsThousns = "", sMillion =
            "", sTenMillion = "", sHundsMillion = "";
        if (Float.parseFloat(num) <= 20)
            return GetWords(num);
        for (int i = num.length() - 1; i >= 0; i--) {
            char[] numArray = num.toCharArray();
            switch (i) {
            case 0:
                sOns = String.valueOf(numArray[num.length() - 1 - i]);
                if (getInteger(sOns) <= 0)
                    sOns = "";
                break;
            case 1:
                sTens = String.valueOf((getInteger(String.valueOf(numArray[num.length() - 1 - i])) * 10));
                if (getInteger(sTens) <= 0)
                    sTens = "";
                break;
            case 2:
                sHunds = String.valueOf((getInteger(String.valueOf(numArray[num.length() - 1 - i])) * 100));
                if (getInteger(sHunds) <= 0)
                    sHunds = "";
                break;
            case 3:
                sThousns = String.valueOf((getInteger(String.valueOf(numArray[num.length() - 1 - i])) * 1000));
                if (getInteger(sThousns) <= 0)
                    sThousns = "";
                break;
            case 4:
                sTenThousns = String.valueOf((getInteger(String.valueOf(numArray[num.length() - 1 - i])) * 10000));
                if (getInteger(sTenThousns) <= 0)
                    sTenThousns = "";
                break;
            case 5:
                sHundsThousns = String.valueOf((getInteger(String.valueOf(numArray[num.length() - 1 - i])) * 100000));
                if (Float.parseFloat(sHundsThousns) <= 0)
                    sHundsThousns = "";
                break;
            case 6:
                sMillion = String.valueOf((getInteger(String.valueOf(numArray[num.length() - 1 - i])) * 1000000));
                if (Float.parseFloat(sMillion) <= 0)
                    sMillion = "";
                break;
            case 7:
                sTenMillion = String.valueOf((getInteger(String.valueOf(numArray[num.length() - 1 - i])) * 10000000));
                if (Float.parseFloat(sTenMillion) <= 0)
                    sTenMillion = "";
                break;
            case 8:
                sHundsMillion =
                        String.valueOf((getInteger(String.valueOf(numArray[num.length() - 1 - i])) * 100000000));
                if (Float.parseFloat(sHundsMillion) <= 0)
                    sHundsMillion = "";
                break;
            }
        }

        String sConj = GetWords("AND");
        sConj = " " + sConj;
        for (int i = 0; i < num.length(); i++) {
            switch (i) {
            case 0:

                if (getInteger(sOns) > 0) {
                    if (getInteger(sTens) > 0 && (getInteger(sTens) + getInteger(sOns)) <= 20) {
                        sTens = String.valueOf(getInteger(sTens) + getInteger(sOns));
                        sOns = "";
                    } else {
                        sOns = GetWords(sOns);
                        if (sTens != "")
                            //sOns = sOns + " " + sConj;
                            sOns = sConj + " " + sOns;
                    }
                }
                break;
            case 1:
                if (getInteger(sTens) > 0) {
                    sTens = GetWords(sTens);
                }
                break;
            case 2:
                if (getInteger(sHunds) > 0) {
                    sHunds = GetWords(sHunds);
                    if (sOns != "" || sTens != "")
                        //sHunds = sHunds + " " + sConj;
                        sHunds = sConj + " " + sHunds;
                }
                break;
            case 3:
                if (getInteger(sThousns) > 0) {
                    if (getInteger(sTenThousns) > 0) {
                        sTenThousns = String.valueOf(getInteger(sTenThousns) + getInteger(sThousns));
                        sThousns = "";
                    } else {
                        if (getInteger(sThousns) < 3000)
                            sThousns = GetWords(sThousns);
                        else
                            sThousns = GetWords("1000") + " " + GetWords((getInteger(sThousns) / 1000));
                        if (sOns != "" || sTens != "" || sHunds != "")
                            //sThousns = sThousns + " " + sConj;
                            sThousns = sConj + " " + sThousns;
                    }
                }
                break;
            case 4:
                if (getInteger(sTenThousns) > 0) {
                    String sTens_10000 = String.valueOf(getInteger(sTenThousns) / 1000);
                    char[] sTens_10000_array = sTens_10000.toCharArray();
                    if (getInteger(sTens_10000) <= 20) {
                        sTenThousns = GetWords("1000") + " " + GetWords(sTens_10000);
                        if (sOns != "" || sTens != "" || sHunds != "")
                            //sTenThousns = sTenThousns + " " + sConj;
                            sTenThousns = sConj + " " + sTenThousns;
                    } else {
                        sTenThousns =
                                GetWords("1000") + " " + GetWords((String.valueOf(sTens_10000_array[0]) + "0")) + " " +
                                sConj + " " + GetWords(String.valueOf(sTens_10000_array[1]));
                        if (sOns != "" || sTens != "" || sHunds != "")
                            //sTenThousns = sTenThousns + " " + sConj;
                            sTenThousns = sConj + " " + sTenThousns;
                    }
                }
                break;
            case 5:
                if (getInteger(sHundsThousns) > 0) {
                    sHundsThousns = GetWords((getInteger(sHundsThousns) / 1000));
                    if (sTenThousns == "")
                        sHundsThousns += " " + GetWords("1000");
                    if (sTenThousns != "" || sThousns != "" || sHunds != "" || sTens != "" || sOns != "")
                        //sHundsThousns = sHundsThousns + " " + sConj;
                        sHundsThousns = sConj + " " + sHundsThousns;
                }
                break;
            case 6:
                if (getInteger(sMillion) > 0) {
                    if (getInteger(sTenMillion) > 0) {
                        sTenMillion = String.valueOf(getInteger(sTenMillion) + getInteger(sMillion));
                        sMillion = "";
                    } else {
                        if (sMillion.equals("1000000"))
                            sMillion = GetWords("1000000");
                        else
                            sMillion = GetWords("1000000") + " " + GetWords((getInteger(sMillion) / 1000000));
                        if (sHundsThousns != "" || sTenThousns != "" || sThousns != "" || sHunds != "" ||
                            sTens != "" || sOns != "")
                            //sMillion = sMillion + " " + sConj;
                            sMillion = sConj + " " + sMillion;
                    }
                }
                break;
            case 7:
                if (getInteger(sTenMillion) > 0) {
                    String sTens_10000000 = String.valueOf(getInteger(sTenMillion) / 1000000);
                    char[] sTens_10000000_array = sTens_10000000.toCharArray();
                    if (getInteger(sTens_10000000) <= 20) {
                        sTenMillion = GetWords(sTens_10000000);
                        if (sHundsThousns != "" || sTenThousns != "" || sThousns != "" || sHunds != "" ||
                            sTens != "" || sOns != "")
                            //sTenMillion = sTenMillion + " " + sConj;
                            sTenMillion = sConj + " " + sTenMillion;
                    } else {
                        sTenMillion =
                                GetWords("1000000") + " " + GetWords(String.valueOf(sTens_10000000_array[0])) + " " +
                                sConj + " " + GetWords(String.valueOf((sTens_10000000_array[1]) + "0"));
                        if (sHundsThousns != "" || sTenThousns != "" || sThousns != "" || sHunds != "" ||
                            sTens != "" || sOns != "")
                            //sTenMillion = sTenMillion + " " + sConj;
                            sTenMillion = sConj + " " + sTenMillion;
                    }
                }
                break;
            case 8:
                if (getInteger(sHundsMillion) > 0) {
                    sHundsMillion = GetWords((getInteger(sHundsMillion) / 1000000));
                    if (sTenMillion == "")
                        sHundsMillion += " " + GetWords("1000000");
                    if (sTenMillion != "" || sMillion != "" || sTenThousns != "" || sThousns != "" || sHunds != "" ||
                        sTens != "" || sOns != "")
                        //sHundsMillion = sHundsMillion + " " + sConj;
                        sHundsMillion = sConj + " " + sHundsMillion;
                }
                break;
            }
        }
        return sTens + "" + sOns + "" + sHunds + "" + sThousns + "" + sTenThousns + "" + sHundsThousns + "" +
            sMillion + "" + sTenMillion + "" + sHundsMillion;
        //return sHundsMillion + " " + sTenMillion + " " + sMillion + " " + sHundsThousns + " " + sTenThousns + " " + sThousns + " " + sHunds + " " + sOns + " " + sTens ;
        //return sHundsMillion + "" + sMillion + "" + sTenMillion + "" + sHundsThousns + "" + sThousns + "" + sTenThousns + "" + sHunds + "" + sOns + "" + sTens;


    }

    public String GetWords(String digit) {
        String arabicWord = "";
        ResourceBundle props = ResourceBundle.getBundle("com.distinct.rpfs.view.utils.ArabicNumbers");
        arabicWord = props.getString(digit);
        return arabicWord;
    }

    public String GetWords(Integer digit) {
        String arabicWord = "";
        ResourceBundle props = ResourceBundle.getBundle("com.distinct.rpfs.view.utils.ArabicNumbers");
        arabicWord = props.getString(String.valueOf(digit));
        return arabicWord;
    }

    public int getInteger(String value) {
        if (value == null || "".equals(value)) {
            return 0;
        } else {
            return Integer.parseInt(value);
        }
    }


    public String getNumberInArabic(String number) {
        String numInArabic = "";
        String[] numberArray = null;
        String decimalPart = "";
        try {
            System.out.println("Inside getNumberInArabic:" + number);
            if (number != null) {
                if (number.contains(".")) {
                    numberArray = number.split("\\.");
                } else {
                    numberArray = new String[1];
                    numberArray[0] = number;
                }
                System.out.println("NumberArray Length:" + numberArray.length);
                if (numberArray.length > 1) {
                    decimalPart = numberArray[1];
                    if (decimalPart.length() > 3) {
                        decimalPart = decimalPart.substring(0, 2);
                    }
                }
                if (!"".equals(decimalPart)) {
                    numInArabic = this.convert(decimalPart) + " / ";
                }
                numInArabic = numInArabic + this.convert(numberArray[0]);
            }
            System.out.println("NUMBER  :" + numInArabic);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return numInArabic;
    }

  
}

Your rating: None Average: 2 (3 votes)