java数字切换成中文(支持万位以下)

java数字切换成中文(支持万位以下)

因为公司有一个业务逻辑是将数字切换成相应的中文并进行展示,正好现在闲下来自己试了一下写了一段java代码实现了,只做到万位一下正好够公司的业务逻辑使用,第一次写博客,也算开始了第一步,代码写的不够全面,如果有幸看到了请指正。

  • 主要是先算出各个位数上的数字,然后根据不同的情况进行拼接
  • 话不多说,直接看代码把

代码块


public class example
{
    static String Str[] =
    {"","一","二","三","四","五","六","七","八","九","十","百","千","万"};

    public static void main(String args[])
    {
        System.out.println(returnStr(1101));
    }

    public static String returnStr(int str)
    {
        // 1-10
        if(str <= 10)
        {
            return Str[str];
        }
        // 11-99
        else if(str < 100)
        {
            if(str / 10 > 1)
            {
                return new StringBuilder().append(Str[(str - str % 10) / 10]).append(Str[10]).append(Str[str % 10]).toString();
            }
            else
            {
                return new StringBuilder().append(Str[str - str / 10]).append(Str[str / 10]).toString();
            }
        }
        // 100-999
        else if(str < 1000)
        {
            // 先算出百十个位的数字,然后根据不同情况进行拼接
            String baiStr = Str[(str - str % 100) / 100];
            String shiStr = Str[str % 100 / 10];
            String geStr = Str[str % 10];
            // 如果十位为0个位、不为0,则显示几百零几
            if(shiStr == "" && geStr != "")
            {
                return new StringBuffer().append(baiStr).append(Str[11]).append("零").append(geStr).toString();
            }
            // 如果十位个位都为空,即十位个位数都为0,则显示几百
            else if(shiStr == "" && geStr == "")
            {
                return new StringBuffer().append(baiStr).append(Str[11]).toString();
            }
            // 如果十位个位都不为0,则显示几百几十几
            else
            {
                return new StringBuffer().append(baiStr).append(Str[11]).append(shiStr).append(Str[10]).append(geStr).toString();
            }
        }
        // 1000-9999
        else if(str < 10000)
        {
            // 先算出千位百位十位个位数字,根据不同情况进行拼接
            String qianStr = Str[(str - str % 1000) / 1000];
            String baiStr = Str[(str % 1000 - str % 1000 % 100) / 100];
            String shiStr = Str[str % 100 / 10];
            String geStr = Str[str % 10];
            // 首先进行百位是否为0的判断
            // 当百位为0时
            if(baiStr == "")
            {
                // 如果十位为0、个位不为0,则显示几千零几
                if(shiStr == "" && geStr != "")
                {
                    return new StringBuffer().append(qianStr).append(Str[12]).append("零").append(geStr).toString();
                }
                // 如果十位为0、个位为0,则显示几千
                else if(shiStr == "" && geStr == "")
                {
                    return new StringBuffer().append(qianStr).append(Str[12]).toString();
                }
                // 如果十位不为0,则显示几千零几十几
                else
                {
                    return new StringBuffer().append(qianStr).append(Str[12]).append("零").append(shiStr).append(Str[10]).append(geStr).toString();
                }
            }
            //如果百位不为0
            else
            {
                //如果十位为0、个位不为0,则显示几千几百零几
                if(shiStr == "" && geStr != "")
                {
                    return new StringBuffer().append(qianStr).append(Str[12]).append(baiStr).append(Str[11]).append("零").append(geStr).toString();
                }
                //如果十位个位都为零,则显示几千几百
                else if(shiStr == "" && geStr == "")
                {
                    return new StringBuffer().append(qianStr).append(Str[12]).append(baiStr).append(Str[11]).toString();
                }
                //如果十位个位都不为0,则显示几千几百几十几
                else
                {
                    return new StringBuffer().append(qianStr).append(Str[12]).append(baiStr).append(Str[11]).append(shiStr).append(Str[10]).append(geStr).toString();
                }
            }

        }
        return null;
    }

如果有更好的方法,也可以在下面留言的。
第一次写博客,有点小激动啊。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值