• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    java实现整数转化为中文大写金额的方法

    在日常生活中,我们经常会将阿拉伯数字转化为中文大写的情况:"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖", "拾", "佰", "仟", "万", "亿",因此自己就编写一个类,实现该功能的转化。
    实现过程:
    对于这个问题的实现,我们首先把数字按四位一个拆开(符合我们读数字的习惯),然后对这四位数,做出他的读法,具体代码如下:

    private static String getNumberStr1000 (int num) { 
     if (num > 9999 || num  0) { 
      return ""; 
     } 
     int q = num / 1000; 
     int b = (num / 100) % 10; 
     int s = (num / 10) % 10; 
     int g = num % 10; 
     StringBuffer sb = new StringBuffer(); 
     //千 
     if (q > 0) { 
      sb.append(NUMBER1[q]); 
      sb.append(NUMBER2[3]); 
     } 
     //百 
     if (b > 0) { 
      sb.append(NUMBER1[b]); 
      sb.append(NUMBER2[2]); 
     } else { 
      if (q != 0) { 
       sb.append(NUMBER2[0]); 
      } 
     } 
     //十 
     if (s > 0) { 
      sb.append(NUMBER1[s]); 
      sb.append(NUMBER2[1]); 
     } else { 
      if (b != 0) { 
       sb.append(NUMBER2[0]); 
      } 
     } 
     //个 
     if (g > 0) { 
      sb.append(NUMBER1[g]); 
     } 
     return sb.toString(); 
    } 
    

    下面我们只需要在编写一个方法,实现每个四位数的读法以及对应的单位即可,具体代码如下:

    public static String getNumberStr(int num) { 
     if (num  0) { 
      return ""; 
     } 
     if (num == 0) { 
      return NUMBER1[0]; 
     } 
     int split = 10000; 
     int y = num / (split * split); 
     int w = (num / split) % split; 
     int g = num % split; 
     StringBuffer sb = new StringBuffer(); 
     //亿 
     if (y > 0) { 
      sb.append(getNumberStr1000(y)); 
      sb.append(NUMBER2[5]); 
     } 
     //万 
     if (w > 999) { 
      sb.append(getNumberStr1000(w)); 
      sb.append(NUMBER2[4]); 
     } else { 
      if (w > 0) { 
       if (y != 0) { 
        sb.append(NUMBER2[0]); 
       } 
       sb.append(getNumberStr1000(w)); 
       sb.append(NUMBER2[4]); 
      } 
     } 
     //万以下 
     if (g > 0) { 
      if (w != 0) { 
       if (g > 999) { 
        sb.append(getNumberStr1000(g)); 
       } else { 
        sb.append(NUMBER2[0]); 
        sb.append(getNumberStr1000(g)); 
       } 
        
      } else { 
       if (y != 0) { 
        sb.append(NUMBER2[0]); 
       } 
       sb.append(getNumberStr1000(g)); 
      } 
     } 
     return sb.toString(); 
    } 
    

    完整源代码:

     /** 
     *@Description:  
     */ 
    package com.lulei.util; 
     
    public class NumberUtil { 
     private static String[] NUMBER1 = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"}; 
     private static String[] NUMBER2 = {"零", "拾", "佰", "仟", "万", "亿"}; 
      
     /** 
      * @param num 
      * @return 
      * @Author:lulei 
      * @Description:将数字转化为大写 
      */ 
     public static String getNumberStr(int num) { 
      if (num  0) { 
       return ""; 
      } 
      if (num == 0) { 
       return NUMBER1[0]; 
      } 
      int split = 10000; 
      int y = num / (split * split); 
      int w = (num / split) % split; 
      int g = num % split; 
      StringBuffer sb = new StringBuffer(); 
      //亿 
      if (y > 0) { 
       sb.append(getNumberStr1000(y)); 
       sb.append(NUMBER2[5]); 
      } 
      //万 
      if (w > 999) { 
       sb.append(getNumberStr1000(w)); 
       sb.append(NUMBER2[4]); 
      } else { 
       if (w > 0) { 
        if (y != 0) { 
         sb.append(NUMBER2[0]); 
        } 
        sb.append(getNumberStr1000(w)); 
        sb.append(NUMBER2[4]); 
       } 
      } 
      //万以下 
      if (g > 0) { 
       if (w != 0) { 
        if (g > 999) { 
         sb.append(getNumberStr1000(g)); 
        } else { 
         sb.append(NUMBER2[0]); 
         sb.append(getNumberStr1000(g)); 
        } 
         
       } else { 
        if (y != 0) { 
         sb.append(NUMBER2[0]); 
        } 
        sb.append(getNumberStr1000(g)); 
       } 
      } 
      return sb.toString(); 
     } 
      
     /** 
      * @param num 
      * @return 
      * @Description:对万以下的数字进行大小写转化 
      */ 
     private static String getNumberStr1000 (int num) { 
      if (num > 9999 || num  0) { 
       return ""; 
      } 
      int q = num / 1000; 
      int b = (num / 100) % 10; 
      int s = (num / 10) % 10; 
      int g = num % 10; 
      StringBuffer sb = new StringBuffer(); 
      //千 
      if (q > 0) { 
       sb.append(NUMBER1[q]); 
       sb.append(NUMBER2[3]); 
      } 
      //百 
      if (b > 0) { 
       sb.append(NUMBER1[b]); 
       sb.append(NUMBER2[2]); 
      } else { 
       if (q != 0) { 
        sb.append(NUMBER2[0]); 
       } 
      } 
      //十 
      if (s > 0) { 
       sb.append(NUMBER1[s]); 
       sb.append(NUMBER2[1]); 
      } else { 
       if (b != 0) { 
        sb.append(NUMBER2[0]); 
       } 
      } 
      //个 
      if (g > 0) { 
       sb.append(NUMBER1[g]); 
      } 
      return sb.toString(); 
     } 
     
     public static void main(String[] args) { 
      // TODO Auto-generated method stub 
      int i = 1; 
      System.out.println(i + "--" + NumberUtil.getNumberStr(i)); 
      i = 1001; 
      System.out.println(i + "--" + NumberUtil.getNumberStr(i)); 
      i = 100101; 
      System.out.println(i + "--" + NumberUtil.getNumberStr(i)); 
      i = 10100101; 
      System.out.println(i + "--" + NumberUtil.getNumberStr(i)); 
      i = 1234567890; 
      System.out.println(i + "--" + NumberUtil.getNumberStr(i)); 
     } 
     
    }

     测试运行结果:

    希望本文所述对大家学习java程序设计有所帮助。

    您可能感兴趣的文章:
    • java中文转拼音工具类详解
    • java中unicode和中文相互转换的简单实现
    • java中文转全拼工具类分享
    • java unicode转码为中文实例
    • java数字转汉字工具类详解
    • java金额数字转中文工具类详解
    上一篇:图文详解Windows Server2012 R2中安装SQL Server2008
    下一篇:SQLServer 2008 R2中使用Cross apply统计最新数据和最近数据
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    java实现整数转化为中文大写金额的方法 java,实现,整数,转,化为,