/**
* 作者:陈伟兵
* MSN: cwbnig@hotmail.com
* Q Q: 56235312
* 信箱:chenweibing1982@163.com
*/
import java.lang.Math;
/**
* 将小写的金额转换成中文的大写金额
* 如“5460”转换成“伍千肆百陆十零”
* 本程序暂时对单位只支持到亿
*/
public class DateToChinese
{
public static void main(String[] args)
{
//要转换的小写的金额数字
int number = 5460;
//用于最终输出内容的字符串
String output = "";
//大写的中文数字
String[] chineseNumber = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖", "拾" };
//数字的中文单位(十,百,千,万,十万,百万,千万,亿,十亿,百亿,千亿,万亿)
String[] chineseUnit = {"十","百","千","万","十","百","千","亿","十","百","千","万"};
//基数
int a = 1;
//在每个中文单位上的数字
int b;
//中文单位的数组的索引
int temp;
//找到最大的基数,举例:number=5460,那么最大基数是1000
for (int i = 1; i < number; i *= 10)
{
a = i;
}
//只要基数大于1,就反复执行循环,直到基数小于1为止
while (a >= 1)
{
//从整个数字左边起,求第一个单位上的数字,举例:number=5460,那么b=5
b = number/a;
//求出当前基数对应的中文单位,举例:a=1000,那么b=3
temp=(int)Math.log10((double)(a));
number = number%a;
a = a/10;
//如果中文单位索引大于0,则取出中文单位
if(temp>0)
{
output = output + chineseNumber[b]+chineseUnit[temp-1];
}
else
{
output = output + chineseNumber[b];
}
}
//输出转换后的中文的大写金额
System.out.println(output);
}
}