我的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_蝈蝈 阅读(399) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: