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

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());
 }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值