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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章