人民币金额的中文大写形式
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
题目描述:
读入一个浮点数值,将其转化为中文金额的大写形式。如123.45,转化为:壹佰贰拾叁元肆角伍分。编写程序,针对以下多种数据情况进一步完善程序。
1.当金额为整数时,只表示整数部分,并添加“整”字。如123表示为:壹佰贰拾叁元整。
2.当金额中含有连续的0时,只需写一个“零”即可。如10005表示为:壹万零伍元整。
3.10的表示形式。如110表示为:壹佰壹拾元整。而10则表示为:拾元整。
代码为:
import java.util.Scanner;
public class P63
{
//将数字大写
public static String a(char i)
{
switch(i)
{
case '1':
return "壹";
case '2':
return "贰";
case '3':
return "叁";
case '4':
return "肆";
case '5':
return "伍";
case '6':
return "陆";
case '7':
return "柒";
case '8':
return "捌";
case '9':
return "玖";
}
return " ";
}
//处理万、亿
public static String c(int i)
{
String c = "";
int j;
if(i % 2 != 0)
c = "万"+c;
for(j = i/2;j > 0;j--)
c = "亿" + c;
return c;
}
//返回单位
public static String b(int i)
{
switch(i%4)
{
case 1:
return c(i/4);
case 2:
return "拾";
case 3:
return "佰";
case 0:
return "仟";
}
return " ";
}
public static void main(String[] args)
{
String result ="";
int j,i = 0;
Scanner in = new Scanner(System.in);
System.out.print("请输入你要转换大写的人民币金额:"); //输入人民币金额并赋值给f
String f = in.nextLine();
//用"."切割f,并赋值给s
String[] s=f.split("\\.");
while(i < s[0].length())
{
if(s[0].charAt(i)=='0')
{
//判断是否返回万、亿、万亿……
if((s[0].length()-i)%4==1&&i!=s[0].length()-1) for(j = i-1;j >= 0&&j > i-4;j--)
if(s[0].charAt(j)!='0')
result += b(s[0].length()-i);
i++;
while(i < s[0].length())
{
if(s[0].charAt(i)!='0')
{
result+="零"+a(s[0].charAt(i))+b(s[0].length()-i); break;
}
i++;
}
}
else
{
result+=a(s[0].charAt(i))+b(s[0].length()-i);
}
i++;
}
if(result.trim().length()==2)
result = result.replaceAll("壹拾", "拾");
result = result.replaceAll("零壹拾", "零拾");
System.out.print("转换后的大写为:");
Double n =Double.parseDouble(s[0]);
double d =Double.parseDouble(f);
if(n == d )
System.out.println(result.trim()+"元整");
else
{
result+="元";
if(s[1].charAt(0)!='0')
result+=a(s[1].charAt(0))+"角";
else
result+="零";
if(s[1].length()>=2)
if(s[1].charAt(1)!='0')
result+=a(s[1].charAt(1))+"分"; System.out.println(result.trim()); }
}
}