• 设为首页
  • 收藏本站
  • 积分充值
  • VIP赞助
  • 手机版
  • 微博
  • 微信
    微信公众号 添加方式:
    1:搜索微信号(888888
    2:扫描左侧二维码
  • 快捷导航
    福建二哥 门户 查看主题

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

    发布者: 福建二哥 | 发布时间: 2025-6-18 12:45| 查看数: 73| 评论数: 0|帖子模式

    在日常生活中,我们经常会将阿拉伯数字转化为中文大写的情况:"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖", "拾", "佰", "仟", "万", "亿",因此自己就编写一个类,实现该功能的转化。
    实现过程:
    对于这个问题的实现,我们首先把数字按四位一个拆开(符合我们读数字的习惯),然后对这四位数,做出他的读法,具体代码如下:
    1. private static String getNumberStr1000 (int num) {
    2. if (num > 9999 || num < 0) {
    3.   return "";
    4. }
    5. int q = num / 1000;
    6. int b = (num / 100) % 10;
    7. int s = (num / 10) % 10;
    8. int g = num % 10;
    9. StringBuffer sb = new StringBuffer();
    10. //千
    11. if (q > 0) {
    12.   sb.append(NUMBER1[q]);
    13.   sb.append(NUMBER2[3]);
    14. }
    15. //百
    16. if (b > 0) {
    17.   sb.append(NUMBER1[b]);
    18.   sb.append(NUMBER2[2]);
    19. } else {
    20.   if (q != 0) {
    21.    sb.append(NUMBER2[0]);
    22.   }
    23. }
    24. //十
    25. if (s > 0) {
    26.   sb.append(NUMBER1[s]);
    27.   sb.append(NUMBER2[1]);
    28. } else {
    29.   if (b != 0) {
    30.    sb.append(NUMBER2[0]);
    31.   }
    32. }
    33. //个
    34. if (g > 0) {
    35.   sb.append(NUMBER1[g]);
    36. }
    37. return sb.toString();
    38. }
    复制代码
    下面我们只需要在编写一个方法,实现每个四位数的读法以及对应的单位即可,具体代码如下:
    1. public static String getNumberStr(int num) {
    2. if (num < 0) {
    3.   return "";
    4. }
    5. if (num == 0) {
    6.   return NUMBER1[0];
    7. }
    8. int split = 10000;
    9. int y = num / (split * split);
    10. int w = (num / split) % split;
    11. int g = num % split;
    12. StringBuffer sb = new StringBuffer();
    13. //亿
    14. if (y > 0) {
    15.   sb.append(getNumberStr1000(y));
    16.   sb.append(NUMBER2[5]);
    17. }
    18. //万
    19. if (w > 999) {
    20.   sb.append(getNumberStr1000(w));
    21.   sb.append(NUMBER2[4]);
    22. } else {
    23.   if (w > 0) {
    24.    if (y != 0) {
    25.     sb.append(NUMBER2[0]);
    26.    }
    27.    sb.append(getNumberStr1000(w));
    28.    sb.append(NUMBER2[4]);
    29.   }
    30. }
    31. //万以下
    32. if (g > 0) {
    33.   if (w != 0) {
    34.    if (g > 999) {
    35.     sb.append(getNumberStr1000(g));
    36.    } else {
    37.     sb.append(NUMBER2[0]);
    38.     sb.append(getNumberStr1000(g));
    39.    }
    40.    
    41.   } else {
    42.    if (y != 0) {
    43.     sb.append(NUMBER2[0]);
    44.    }
    45.    sb.append(getNumberStr1000(g));
    46.   }
    47. }
    48. return sb.toString();
    49. }
    复制代码
    完整源代码:
    1. /**
    2. *@Description:  
    3. */
    4. package com.lulei.util;

    5. public class NumberUtil {
    6. private static String[] NUMBER1 = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};
    7. private static String[] NUMBER2 = {"零", "拾", "佰", "仟", "万", "亿"};
    8.   
    9. /**
    10.   * @param num
    11.   * @return
    12.   * @Author:lulei
    13.   * @Description:将数字转化为大写
    14.   */
    15. public static String getNumberStr(int num) {
    16.   if (num < 0) {
    17.    return "";
    18.   }
    19.   if (num == 0) {
    20.    return NUMBER1[0];
    21.   }
    22.   int split = 10000;
    23.   int y = num / (split * split);
    24.   int w = (num / split) % split;
    25.   int g = num % split;
    26.   StringBuffer sb = new StringBuffer();
    27.   //亿
    28.   if (y > 0) {
    29.    sb.append(getNumberStr1000(y));
    30.    sb.append(NUMBER2[5]);
    31.   }
    32.   //万
    33.   if (w > 999) {
    34.    sb.append(getNumberStr1000(w));
    35.    sb.append(NUMBER2[4]);
    36.   } else {
    37.    if (w > 0) {
    38.     if (y != 0) {
    39.      sb.append(NUMBER2[0]);
    40.     }
    41.     sb.append(getNumberStr1000(w));
    42.     sb.append(NUMBER2[4]);
    43.    }
    44.   }
    45.   //万以下
    46.   if (g > 0) {
    47.    if (w != 0) {
    48.     if (g > 999) {
    49.      sb.append(getNumberStr1000(g));
    50.     } else {
    51.      sb.append(NUMBER2[0]);
    52.      sb.append(getNumberStr1000(g));
    53.     }
    54.      
    55.    } else {
    56.     if (y != 0) {
    57.      sb.append(NUMBER2[0]);
    58.     }
    59.     sb.append(getNumberStr1000(g));
    60.    }
    61.   }
    62.   return sb.toString();
    63. }
    64.   
    65. /**
    66.   * @param num
    67.   * @return
    68.   * @Description:对万以下的数字进行大小写转化
    69.   */
    70. private static String getNumberStr1000 (int num) {
    71.   if (num > 9999 || num < 0) {
    72.    return "";
    73.   }
    74.   int q = num / 1000;
    75.   int b = (num / 100) % 10;
    76.   int s = (num / 10) % 10;
    77.   int g = num % 10;
    78.   StringBuffer sb = new StringBuffer();
    79.   //千
    80.   if (q > 0) {
    81.    sb.append(NUMBER1[q]);
    82.    sb.append(NUMBER2[3]);
    83.   }
    84.   //百
    85.   if (b > 0) {
    86.    sb.append(NUMBER1[b]);
    87.    sb.append(NUMBER2[2]);
    88.   } else {
    89.    if (q != 0) {
    90.     sb.append(NUMBER2[0]);
    91.    }
    92.   }
    93.   //十
    94.   if (s > 0) {
    95.    sb.append(NUMBER1[s]);
    96.    sb.append(NUMBER2[1]);
    97.   } else {
    98.    if (b != 0) {
    99.     sb.append(NUMBER2[0]);
    100.    }
    101.   }
    102.   //个
    103.   if (g > 0) {
    104.    sb.append(NUMBER1[g]);
    105.   }
    106.   return sb.toString();
    107. }

    108. public static void main(String[] args) {
    109.   // TODO Auto-generated method stub
    110.   int i = 1;
    111.   System.out.println(i + "--" + NumberUtil.getNumberStr(i));
    112.   i = 1001;
    113.   System.out.println(i + "--" + NumberUtil.getNumberStr(i));
    114.   i = 100101;
    115.   System.out.println(i + "--" + NumberUtil.getNumberStr(i));
    116.   i = 10100101;
    117.   System.out.println(i + "--" + NumberUtil.getNumberStr(i));
    118.   i = 1234567890;
    119.   System.out.println(i + "--" + NumberUtil.getNumberStr(i));
    120. }

    121. }
    复制代码
    测试运行结果:

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


    来源:https://www.jb51.net/article/77224.htm
    免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

    ×

    最新评论

    QQ Archiver 手机版 小黑屋 福建二哥 ( 闽ICP备2022004717号|闽公网安备35052402000345号 )

    Powered by Discuz! X3.5 © 2001-2023

    快速回复 返回顶部 返回列表