JAVA 人民币数字模式与中文繁体模式的转换(小白专用)!

金额转为大写形式
要求如下:
给定一个浮点数,将其转换为金额的中文大写形式的字符串。例如,123.45表示为“壹佰贰拾叁元肆角伍分”。注意以下几种情况:
A.当金额为整数时,只表示整数部分,省略小数部分,并添加“整”字,例如123表示成“壹佰贰拾叁元整”。
B.当金额中含有连续的0时,只需写一个“零”即可。例如10005表示为“壹万零伍元整”。
C.10的省略表示。例如110表示为“壹佰壹拾元整”,而10表示为“拾元整”。
D.100表示为“壹佰元整”,1000表示为“壹仟元整”等等。

设立三个字符串,方便后续的应用

yuan="亿千百拾万千百拾元角分";
 big="壹贰叁肆伍陆柒捌玖";
 end="";

将小数点去除,方便后续的运算

int y=(int)Math.round(x*100-0.5);//去小数

将小数和整数分离,并将整数部分转为字符串的形式

int xiaoshu=y%100;
		y=y/100;
		String money=String.valueOf(y);//转换成字符串形式

按照标号,去寻找对应的数字大写和单位

end=big.charAt(money.charAt(j)-'1')+""+yuan.charAt(k)+""+end;//按照标号去寻找对应的大写和单位

charAt() 方法用于返回指定索引处的字符
所以 该方法具体内容如下


		

		if (y==0&&xiaoshu==0) {//小数整数均为零时
			end=end+"零元";
		}
		else if (y==10&&xiaoshu==0) {//为10时
			end="拾元整"+end;
		}
		else if (y!=0&&xiaoshu==0&&y!=10&&y%10!=0) {//小数为零而整数不为零
			int j=money.length()-1;
            int k=8;
            while(j>=0)
            {
            	if(money.charAt(j)=='0'&&money.charAt(j-1)=='0')
                {
                    j--;
                    k--;
                    continue;
                }
            	else if (money.charAt(j)=='0'&&money.charAt(j-1)!='0') {
            		
					end="零"+end;
					j--;
					k--;
					continue;
				}
                end=big.charAt(money.charAt(j)-'1')+""+yuan.charAt(k)+""+end;//按照标号去寻找对应的大写和单位
                j--;
                k--;
            }
            end=end+"整";
		}
		else if (y==0&&xiaoshu!=0) {//只有小数时
			int m=xiaoshu/10;
			int n=xiaoshu%10;
			if (m!=0) {
				 end=end+big.charAt(m-1)+"角";
			}
			if (n!=0) {
				 end=end+big.charAt(n-1)+"分";
			}
		}
		
          else if (y%10==0) {//所求数是10的倍数时
        	  int j=money.length()-1;
              int k=8;
              while(j>=0)
              {
              	if(money.charAt(j)=='0')
                  {
                      j--;
                      k--;
                      continue;
                  }
              	
                  end=big.charAt(money.charAt(j)-'1')+""+yuan.charAt(k)+""+end;
                  j--;
                  k--;
              }
              end=end+"元整";
            
		}
		
	

main函数较为简单

在这里插入图片描述
本题主要难度,在于缕清思路,分块完成

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值