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]));
}
}
java將金額字符串取整轉爲人民幣大寫形式(瘋狂java講義164頁)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.