您的位置:首页 > 其它

一亿以内的阿拉伯数字大小写的转化

2013-08-30 09:00 134 查看
package com.cyb.syn;

/**

 * * 将10亿以内的阿拉伯数字转成汉字大写形式 *

 *

 * @author xizhenyin *

 */

public class CnUpperCaser { // 整数部分

 private String integerPart;

 // 小数部分

 private String floatPart;

 // 将数字转化为汉字的数组,因为各个实例都要使用所以设为静态

 private static final char[] cnNumbers = { '零', '壹', '贰', '叁', '肆', '伍',

   '陆', '柒', '捌', '玖' };

 // 供分级转化的数组,因为各个实例都要使用所以设为静态

 private static final char[] series = { '元', '拾', '百', '仟', '万', '拾', '百','仟','亿' };//9位   9 8 7 6 5 4 3 2 1

 // 供分级转化的数组,因为各个实例都要使用所以设为静态

 private static final char[] series2 = {  '亿','仟','百','拾','万','仟','百','拾','元'};

 /**

  * * 构造函数,通过它将阿拉伯数字形式的字符串传入 *

  *

  * @param original

  */

 public CnUpperCaser(String original) {

  // 成员变量初始化

  integerPart = "";

  floatPart = "";

  if (original.contains(".")) {

   // 如果包含小数点

   int dotIndex = original.indexOf(".");

   integerPart = original.substring(0, dotIndex);

   floatPart = original.substring(dotIndex + 1);

  } else {

   // 不包含小数点

   integerPart = original;

  }

 }

 /**

  * * 取得大写形式的字符串 *

  *

  * @return

  */

 public String getCnString() { // 因为是累加所以用StringBuffer

  StringBuffer sb = new StringBuffer(); // 整数部分处理

  for (int i = 0; i < integerPart.length(); i++) {

   int number = getNumber(integerPart.charAt(i));//由高到底获取数字

   sb.append(cnNumbers[number]);//大写数字

   sb.append(series[integerPart.length() - 1 - i]);//

   //sb.append(series2[i]);

  } // 小数部分处理

  if (floatPart.length() > 0) {

   sb.append("点");

   for (int i = 0; i < floatPart.length(); i++) {

    int number = getNumber(floatPart.charAt(i));

    sb.append(cnNumbers[number]);

   }

  }

  // 返回拼接好的字符串

  return sb.toString();

 }

 /**

  * * 将字符形式的数字转化为整形数字 * 因为所有实例都要用到所以用静态修饰 *

  *

  * @param c *

  * @return

  */

 private static int getNumber(char c) {

  String str = String.valueOf(c);

  return Integer.parseInt(str);

 }

 /**

  * *

  *

  * @param args

  */

 public static void main(String[] args) {

  System.out.println(new CnUpperCaser("123456789.12345").getCnString());

  System.out.println(new CnUpperCaser("123456789.12345").getCnString());

  System.out.println(new CnUpperCaser("123456789").getCnString());

  System.out.println(new CnUpperCaser(".123456789").getCnString());

  System.out.println(new CnUpperCaser("0.1234").getCnString());

  System.out.println(new CnUpperCaser("1").getCnString());

  System.out.println(new CnUpperCaser("12").getCnString());

  System.out.println(new CnUpperCaser("123").getCnString());

  System.out.println(new CnUpperCaser("1234").getCnString());

  System.out.println(new CnUpperCaser("12345").getCnString());

  System.out.println(new CnUpperCaser("123456").getCnString());

  System.out.println(new CnUpperCaser("1234567").getCnString());

  System.out.println(new CnUpperCaser("12345678").getCnString());

  System.out.println(new CnUpperCaser("123456789").getCnString());

 }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  实例