先看下解决的思路
我是这样想的
http://bbs.itheima.com/forum.php?mod=attachment&aid=MTA5Njh8MzQxNjE1MzQ0YzMyYjExODFmOGFhNmI3Yzk2YzI4NGZ8MTczNDkyNjYyMw%3D%3D&request=yes&_f=.jpg
下面是代码 注释的很清楚 经过测试 输出的内容完全符合 我们日常口头的表述- public class ZhuanHuan {
- // 首先创建两个数组,定义位数上的读法以及后缀名称,如1之后对应元,10是拾元
- private static final char[] data = new char[] { '零', '壹', '贰', '叁', '肆',
- '伍', '陆', '柒', '捌', '玖' };
- private static final char[] units = new char[] { '元', '拾', '佰', '仟', '万',
- '拾', '佰', '仟', '亿' };
- // 创建主函数,输出135689123对应的中国传统形式金额调用转换方法
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- System.out.println(convert(210));
- }
- // 创建一个名字叫convert的方法
- public static String convert(int money) {
- // 在这里创建一个StringBuffer对象
- StringBuffer sbf = new StringBuffer();
- //一定会输出“xxx元整”所以先加上
- sbf.insert(0, "元整");
- int unit = 0;
- // 当输入0 的时候直接输出零元
- while (money == 0) {
- System.out.println("零元");
- break;
- }
- // 当输入的数值非零的时候进行判断
- while (money != 0) {
- int number = money % 10;
- //取余的值为0说明在此位上的数字为0则舍弃单位的输出
- if (number == 0) {
- //此时判断它的上一位是否为0防止出现“xxx零零xxx整”输出的情况 同时判断他的是否是个位防止出现“xxx零元整”的 输出
- if (!sbf.substring(0, 1).equals("零")&&!sbf.substring(0, 1).equals("元")) {
- sbf.insert(0, data[0]);
- }//因为个位已经加上单位所以要在unit>0的情况下在输出单位
- } else if(number>0&&unit>0){
-
- sbf.insert(0, units[unit]);
- }
- //如果值出不为0则输出值
- if (number != 0) {
- sbf.insert(0, data[number]);
- }
- money /= 10;
- //随着位数的上涨变换单位
- unit++;
- }
- // 转化成字符串形式输出
- return sbf.toString();
- }
- }
复制代码 第一次发帖 可能做的不好哈 请见谅。。。。。 |
|