我的Blog我做主^_^

          走向一條通往JAVA的不歸路...

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            64 隨筆 :: 68 文章 :: 77 評論 :: 0 Trackbacks

          public class TranMoney {
           public TranMoney() {
           }
          // public static void main(String ars[]){
          //  System.out.println(getChnmoney("11000.01"));
          //  
          // }
           public static String getChnmoney(String strNum) {
            int n, m, k, i, j, q, p, s = 0;
            int length, subLength, pstn;
            String change, output, subInput, input = strNum;
            output = "";
            if (strNum.equals(""))
             return null;
            else {
             length = input.length();
             pstn = input.indexOf('.'); // 小數點的位置

             if (pstn == -1) {
              subLength = length;// 獲得小數點前的數字
              subInput = input;
             } else {
              subLength = pstn;
              subInput = input.substring(0, subLength);
             }

             char[] array = new char[4];
             char[] array2 = { '仟', '佰', '拾' };
             char[] array3 = { '億', '萬', '元', '角', '分' };

             n = subLength / 4;// 以千為單位
             m = subLength % 4;

             if (m != 0) {
              for (i = 0; i < (4 - m); i++) {
               subInput = '0' + subInput;// 補充首位的零以便處理
              }
              n = n + 1;
             }
             k = n;

             for (i = 0; i < n; i++) {
              p = 0;
              change = subInput.substring(4 * i, 4 * (i + 1));
              array = change.toCharArray();// 轉換成數組處理

              for (j = 0; j < 4; j++) {
               output += formatC(array[j]);// 轉換成中文
               if (j < 3) {
                output += array2[j];// 補進單位,當為零是不補(千百十)
               }
               p++;
              }

              if (p != 0)
               output += array3[3 - k];// 補進進制(億萬元分角)
              // 把多余的零去掉

              String[] str = { "零仟", "零佰", "零拾" };
              for (s = 0; s < 3; s++) {
               while (true) {
                q = output.indexOf(str[s]);
                if (q != -1)
                 output = output.substring(0, q) + "零"
                   + output.substring(q + str[s].length());
                else
                 break;
               }
              }
              while (true) {
               q = output.indexOf("零零");
               if (q != -1)
                output = output.substring(0, q) + "零"
                  + output.substring(q + 2);
               else
                break;
              }
              String[] str1 = { "零億", "零萬", "零元" };
              for (s = 0; s < 3; s++) {
               while (true) {
                q = output.indexOf(str1[s]);
                if (q != -1)
                 output = output.substring(0, q)
                   + output.substring(q + 1);
                else
                 break;
               }
              }
              k--;
             }

             if (pstn != -1)// 小數部分處理
             {
              for (i = 1; i < length - pstn; i++) {
               if (input.charAt(pstn + i) != '0') {
                output += formatC(input.charAt(pstn + i));
                output += array3[2 + i];
               } else if (i < 2)
                output += "零";
               else
                output += "";
              }
             }
             if (output.substring(0, 1).equals("零"))
              output = output.substring(1);
             if (output.substring(output.length() - 1, output.length()).equals(
               "零"))
              output = output.substring(0, output.length() - 1);
             if(output.indexOf("分")>0||output.indexOf("角")>0){
              return output;
             }else{
              return output += "整";
             }
             
            }
           }

           public static String get3Eng(String strNum) {
            String strEng = "";
            String str[] = { "", "ONE", "TWO", "THREE", "FOUR", "FIVE", "SIX",
              "SEVEN", "EIGHT", "NINE" };
            String str1[] = { "TEN", "ELEVEN", "TWELVE", "THIRTEEN", "FOURTEEN",
              "FIFTEEN", "SIXTEEN", "SEVENTEEN", "EIGHTEEN", "NINETEEN" };
            String str2[] = { "TEN", "TWENTY", "THIRTY", "FORTY", "FIFTY", "SIXTY",
              "SEVENTY", "EIGHTY", "NINETY", "HUNDRED" };
            int num = Integer.parseInt(strNum);
            int b = num / 100;
            int t = (num % 100) / 10;
            int g = (num % 100) % 10;
            if (b != 0) {
             strEng = strEng + str[b] + " " + str2[9];
            }

            if (t == 0) {
             if (g != 0) {
              if (b != 0) {
               strEng = strEng + " AND ";
              }
              strEng = strEng + str[g];
             }
            } else if (t == 1) {
             if (b != 0) {
              strEng = strEng + " AND ";
              num = num % 100;
             }
             strEng = strEng + str1[num - 10];
            } else if (t != 1) {
             if (g != 0) {
              if (b != 0) {
               strEng = strEng + " AND ";
              }
              strEng = strEng + str2[t - 1] + "-" + str[g];
             } else {
              if (b != 0) {
               strEng = strEng + " AND ";
              }
              strEng = strEng + str2[t - 1] + str[g];
             }
            }
            return strEng;
           }

           public static String getCent(String strNum) {
            String strEng = "";
            String str[] = { "", "ONE", "TWO", "THREE", "FOUR", "FIVE", "SIX",
              "SEVEN", "EIGHT", "NINE" };
            String str1[] = { "TEN", "ELEVEN", "TWELVE", "THIRTEEN", "FOURTEEN",
              "FIFTEEN", "SIXTEEN", "SEVENTEEN", "EIGHTEEN", "NINETEEN" };
            String str2[] = { "TEN", "TWENTY", "THIRTY", "FORTY", "FIFTY", "SIXTY",
              "SEVENTY", "EIGHTY", "NINETY", "HUNDRED" };
            String str3[] = { "CENTS", "", "DOLLARS", "", "HUNDRED", "THOUSAND",
              "", "", "MILLION", "", "", "BILLION", "", "" };
            if (strNum.equals(""))
             return null;
            else {
             int length = strNum.length();
             if (length != 3) {
              return "輸入的位數錯誤!";
             }
             int cent = Integer.parseInt(strNum.substring(1, 3));
             if (cent == 0) {
              return strEng;
             }
             if (cent < 10) {
              strEng = str3[0] + " " + strEng + str[cent];
             } else if (cent >= 10 && cent <= 19) {
              strEng = str3[0] + " " + strEng + str1[cent - 10];
             } else if (cent > 19) {
              int jiao = cent / 10;
              int fen = cent % 10;
              if (fen != 0) {
               strEng = str3[0] + " " + strEng + str2[jiao - 1] + "-"
                 + str[fen];
              } else {
               strEng = str3[0] + " " + strEng + str2[jiao - 1] + str[fen];
              }
             }
             return strEng;
            }
           }

           public static String getEngmoney(String strNum) {
            String strNumber = "";
            String str3[] = { "CENTS", "", "DOLLARS", "", "HUNDRED", "THOUSAND",
              "", "", "MILLION", "", "", "BILLION", "", "" };
            String strEng = "";
            strNumber = strNum;
            int pointbz = strNumber.indexOf(".");
            if (pointbz < 0) {
             strNumber = strNumber + ".00";
            } else if (pointbz > 0) {
             int k = strNum.length() - pointbz;
             if (k == 2) {
              strNumber = strNumber + "0";
             } else if (k == 1) {
              strNumber = strNumber + "00";
             }
            }
            int length = strNumber.length();
            if (length > 16) {
             return "您輸入的值過大系統無法處理!";
            }
            String strb = "";
            String strm = "";
            String strq = "";
            String stry = "";
            String strf = "";
            // 得到分
            if (length == 3) {
             strf = getCent(strNumber);
             strEng = strEng + strf;
            } else if (length > 3 && length < 7) {
             stry = get3Eng(strNumber.substring(0, length - 3));
             strf = getCent(strNumber.substring(length - 3, length));
             strEng = strEng + stry + " " + str3[2];
             if (!strf.equals("")) {
              strEng = strEng + " AND " + strf;
             }
            } else if (length > 6 && length < 10) {
             strq = get3Eng(strNumber.substring(0, length - 6));
             stry = get3Eng(strNumber.substring(length - 6, length - 3));
             strf = getCent(strNumber.substring(length - 3, length));
             strEng = strEng + strq + " " + str3[5];
             if (stry.equals("")) {
              strEng = strEng + " " + stry;
             } else {
              strEng = strEng + " " + stry + " " + str3[2];
             }
             if (!strf.equals("")) {
              strEng = strEng + " AND " + strf;
             }
            } else if (length > 9 && length < 13) {
             strm = get3Eng(strNumber.substring(0, length - 9));
             strq = get3Eng(strNumber.substring(length - 9, length - 6));
             stry = get3Eng(strNumber.substring(length - 6, length - 3));
             strf = getCent(strNumber.substring(length - 3, length));
             strEng = strEng + strm + " " + str3[8];
             if (!strq.equals("")) {
              strEng = strEng + " " + strq + " " + str3[5];
             }
             if (!stry.equals("")) {
              strEng = strEng + " " + stry + " " + str3[2];
             } else {
              strEng = strEng + " " + str3[2];
             }
             if (!strf.equals("")) {
              strEng = strEng + " AND " + strf;
             }
            } else if (length > 12 && length < 16) {
             strb = get3Eng(strNumber.substring(0, length - 12));
             strm = get3Eng(strNumber.substring(length - 12, length - 9));
             strq = get3Eng(strNumber.substring(length - 9, length - 6));
             stry = get3Eng(strNumber.substring(length - 6, length - 3));
             strf = getCent(strNumber.substring(length - 3, length));
             strEng = strEng + strb + " " + str3[11];
             if (!strm.equals("")) {
              strEng = strEng + " " + strm + " " + str3[8];
             }
             if (!strq.equals("")) {
              strEng = strEng + " " + strq + " " + str3[5];
             }
             if (!stry.equals("")) {
              strEng = strEng + " " + stry + " " + str3[2];
             } else {
              strEng = strEng + " " + str3[2];
             }
             if (!strf.equals("")) {
              strEng = strEng + " AND " + strf;
             }
            }

            return strEng + " ONLY";
           }

           public static String formatC(char x) {
            String a = "";
            switch (x) {
            case '0':
             a = "零";
             break;
            case '1':
             a = "壹";
             break;
            case '2':
             a = "貳";
             break;
            case '3':
             a = "叁";
             break;
            case '4':
             a = "肆";
             break;
            case '5':
             a = "伍";
             break;
            case '6':
             a = "陸";
             break;
            case '7':
             a = "柒";
             break;
            case '8':
             a = "捌";
             break;
            case '9':
             a = "玖";
             break;
            }
            return a;
           }
          }



          posted on 2007-04-22 10:46 java_蟈蟈 閱讀(412) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 永泰县| 盖州市| 南江县| 盐津县| 北票市| 宜丰县| 扶绥县| 双城市| 南汇区| 鱼台县| 新蔡县| 寿宁县| 哈尔滨市| 福建省| 宝清县| 麟游县| 长岛县| 乌海市| 延津县| 永宁县| 利辛县| 合山市| 微博| 准格尔旗| 正阳县| 团风县| 普安县| 营山县| 东乡族自治县| 南阳市| 自治县| 神农架林区| 临洮县| 海丰县| 茂名市| 休宁县| 临城县| 呼图壁县| 双流县| 敖汉旗| 塔城市|