java将金额字符串取整转为人民币大写形式(疯狂java讲义164页)

import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;
public class NumtoRmb
{//能解决连续两个0的情况
    
    private String[] hanArr={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
    private String[] unitArr={"拾","佰","仟","万","拾万"};
    private String[] divide(double num)
    { 
        long zheng=(long)num;
        long xiaoshu=(long)((num-zheng)*100);//long xiaoshu=Math.round((num-zheng)*100)
        return new String[]{zheng+"",String.valueOf(xiaoshu)};
       
    }
    private boolean Judge(String str)
    {//判断截取的最后的几个字符是否全为0
        boolean flag=true;
        for(int i=0;i<str.length();i++)
        {
            if(str.substring(i,i+1).equals("0")==false)//此处不能使用str[i]==“0”或‘0’的方式
               flag=false;
        }
        return flag;
    }
     private String ChangetoRmb(String numstr)
        {
            String result="";
            int len=numstr.length();
            boolean flag=false;//用以解决出现连续两个0的情况
            for(int i=0;i<len;i++)
            {
                int num=numstr.charAt(i)-48;
                if (i!=len-1 && num!=0)
                {
                    result+=hanArr[num]+unitArr[len-2-i];
                    flag=true;
                }
                else if(i!=len-1&&num==0)
                {   
                    if(flag==false)
                    {
                        continue;
                    }
                    if(flag==true)
                    {//若遇到0,则判断该0之后的子字符串是否全为0
                        if(Judge(numstr.substring(i,len))==true)
                        {//若全为0,则直接退出循环
                           break;
                        }
                        flag=false;
                        result+=hanArr[num];
                    }
                    
                    
                }
                else if(i==len-1)
                {//判断最后一个字符是否为0,若是则不输出任何东西
                     if(num==0)
                         continue;
                     else
                     {
                        result+=hanArr[num];
                     }
                     
                }
            }
            return result;
        }
    public static void main(String[] args)
    {
        NumtoRmb nr=new NumtoRmb();
        System.out.println(nr.ChangetoRmb((nr.divide(600110.563))[0]));
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值