金额的中文大小写方式
问题定义,
金额的范围,最大值与最小值金额的形式,小数 (浮点数 )
解题思路
1 变换为整数,再转换,
2 变换为 byte型数组,再转换,
3 看成字符串进行处理,
变换为整数
1 给一最多由 5位整数和 2位小数组成的浮点数 rmb。
2 判断 0<rmb<100000?,若不是,则显示,数字大小出界。,,程序结束;否则,
3 rmb=rmb*100,把其转化为整数。
4 从高位依次取数字,判断并输出。
程序整体结构
public class Rmb
{
public static void main(String args[])
{
float rmb=76000f;
long rmbint,n,m;
int i,j,k=0,l;
boolean first=false,first1=false,flag=false;
if (rmb<1) first1=true;//置不显示有效数前的 0标志
if ((0<rmb) & (rmb<100000))
{//从高位依次取数字,判断并输出
}
else
System.out.println("金额出界! ");
}
}
从高位依次取数字,判断并输出
for (i=7;i>=1;i--)//从高位依次取数字,判断并输出
{for (j=1;j<=i-1;j++)//取最高位
n=n/10;
l=(int)n;
if (l!=0)//判断最高位
{ first=true;//置显示第一个 0标志
switch(l)
{
case 9,System.out.print("玖 ");break;
case 8,System.out.print("捌 ");break;
case 7,System.out.print("柒 ");break;
case 6,System.out.print("陆 ");break;
case 5,System.out.print("伍 ");break;
case 4,System.out.print("肆 ");break;
case 3,System.out.print("叁 ");break;
case 2,System.out.print("贰 ");break;
case 1,if (rmb!=1000)System.out.print("壹 ");break;//10元显示为,拾元,
}
}
switch(i)
{
case 7,if (l!=0)System.out.print("万 ");
if (rmb%1000000==0) flag=true;//置显示整万标志
break;
case 6,if (l!=0)System.out.print("仟 ");
if (rmb%100000==0) flag=true;break;
case 5,if (l!=0)System.out.print("佰 ");
if (rmb%10000==0) flag=true;break;
case 4,if (l!=0)System.out.print("拾 ");
if (rmb%1000==0) flag=true; break;
case 3,if (rmbint%100==0)flag=true;//置显示整元标志
else
if (!first1)//不够壹元不显示元
System.out.print("圆 "); break;
case 2,if (l!=0)System.out.print("角 ");break;
case 1,if (l!=0)System.out.println("分 ");break;
}
if (flag)//显示圆整
{
System.out.println("圆整 ");
break;
}
for (j=1;j<i;j++)//去掉最高位
n=n*10;
n=m-n;
m=n;
if (l==0)//数字为 0的处理
if (first)//显示第一个 0
{
if (!first1)//不显示有效数前的 0
if //不显示最后的 0 & 不显示,零圆,
((i!=1)&((rmbint/100)%100!=0)&((rmbint/100)%1000!=0)&((rmbint/10
0)%10000!=0))
System.out.print("零 ");
first=false;
}
}//end_for (i=7;i>=1;i--)
习题一 4.(1)
输出,
0 0 0 0 0
0 1 1 1 1
0 1 2 2 2
0 1 2 3 3
0 1 2 3 4
思路,第一次循环生成第 1行和第 1列 ;…