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页)
最新推荐文章于 2021-02-12 16:24:55 发布