📄 moneycn.java
字号:
/**金额的中文大写方式:
* 读入一个浮点值,将其转化为中文大写方式;
* 如123.45转化为壹佰贰拾叁元肆角伍分;
* (1)当金额为整数时 如123表示为壹佰贰拾叁元整;
* (2)当金额中有连续的0时只需一个零如10005表示为壹万零伍元整;
* (3)10的表示方式如110表示为壹佰壹拾元整,而10表示为拾元整。*/
public class Moneycn {
private static long dollars;
private static int cents;
public static void main(String args[]){
System.out.println("输入金额数目:");
String money=SavitchIn.readLine();
double amount=Double.parseDouble(money);
set(amount);
System.out.println("该金额转化为中文大写为:");
write();
} public static void set(double amount)
{if (amount < 0)
{System.out.println("错误:你输入了负数金额。");
System.exit(0);}
else{long allCents =Math.round(amount*100);
dollars = allCents/100;
cents =(int)( allCents%100);}}
public static void write(){
inWords(dollars);
if(cents!=0)inWords(cents);
else System.out.println();
}
public static void inWords(int number){
String[] s=new String[2];
s[0]="角";s[1]="分";
if(number<10)
System.out.println(digitWord(number)+s[1]);
else if(number%10==0)
System.out.println(digitWord(number/10)+s[0]);
else
System.out.println(digitWord(number/10)+s[0]+digitWord(number%10)+s[1]);
}
public static void inWords(long number)
{String[] s=new String[14];
if(cents==0)s[0]="元整";
else s[0]="元";
s[1]="拾";s[2]="佰";s[3]="仟";
s[4]="万";s[5]="拾";
s[6]="佰";s[7]="仟";
s[8]="亿";s[9]="拾";
s[10]="佰";s[11]="仟";
s[12]="万";s[13]="亿";
long[] a=new long[15];
for(int i=1;i<=4;i++)
a[i-1]=(long)Math.pow(10,i);
int i=0;int j=0;
int divisor = powerOfTen(number);
int n=divisor;
long next = number;
if(number==10)System.out.print(digitWord((int)number)+s[0]);
else if(number%10==0){
while(number%a[j]==0){
}
}
else{
while(n>=1){n/=10;
i++;
}
while (divisor >= 10)
{i--;
System.out.print(digitWord((int)(next/divisor)) + s[i]);
next = next%divisor;
divisor = divisor/10;
}
System.out.print(digitWord((int)(next/divisor))+ s[0]);}
}
/**
Precondition: n >= 0. Returns the number of the form one
followed by all zeros that is the same length as n.
*/
private static int powerOfTen(long n)
{ int result = 1;
while(n >= 10)
{ result = result*10;
n = n/10;
}return result;
}
/**
Precondition: 0 <= digit <= 9
Returns the word for the argument digit.
*/
private static String digitWord(int digit)
{ String result = null;
switch (digit)
{case 0:result = "零";break;
case 1:result = "壹";break;
case 2:result = "贰";break;
case 3:result = "叁";break;
case 4:result = "肆";break;
case 5:result = "伍";break;
case 6:result = "陆";break;
case 7:result = "柒";break;
case 8:result = "捌";break;
case 9:result = "玖";break;
case 10:result="拾";break;
default:System.out.println("错误.");
System.exit(0);break;
}
return result;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -