A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

这个怎么做的呀?
public class Test10 {

        /**
         * @param args
         */

        public static void main(String[] args) {
                String arr = "1101000001010";
                String str = transform(arr);
                System.out.println(arr+"转换后位:"+str);

        }

        // 定义一个方法,让数字金额转换成中国传统金额
        public static String transform(String str) {
                // 使用正则表达式判断字符串格式是否为数字
                if (!(str.matches("\\d+"))) {
                        System.out.println("字符串" + str + "不是数字格式,无法转换");
                }
                // 将字符串最前面的0去掉
                while (str.startsWith("0")) {
                        str = str.substring(1, str.length());
                }
                // 将字符串数字替换成中文数字
                String[] num = new String[] { "0", "1", "2", "3", "4", "5", "6", "7",
                                "7", "8", "9" };
                String[] cnNum = new String[] { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒",
                                "捌", "玖" };
                for (int i = 0; i < 10; i++) {
                        str = str.replace(num, cnNum);
                }
                // 定义一个容器存储字符串,用于对字符串的操作
                StringBuilder sb = new StringBuilder(str);
                int index = sb.length() - 1;
                // 存放金额单位
                String[] unit = { "", "拾", "佰", "千" };
                String[] unit4 = { "万", "亿" };
                // 判断前一个数是否为零的标记

                boolean flag = false;
                for (int i = 0; i < str.length(); i++) {
                        // 每4位插入万,每8位插入亿
                        if (i % 4 == 0 && i != 0) {
                                // 根据金额规则,单位万前面有4个0时,不插入万位,并将最低位的零删除
                                if ((i / 4 - 1) % 2 == 0 && index >= 3
                                                && str.substring(index - 3, index + 1).equals("零零零零"))
{
                                        sb.deleteCharAt(index);
                                        index--;
                                        continue;
                                }
                                // 否则在index+1位置插入相应的单位:万、亿
                                sb.insert(index + 1, unit4[(i / 4 - 1) % 2]);
                        }

                        // 如果4位的最低位为零,删除最低位的零,将零标志置为true
                        if (i % 4 == 0 && str.charAt(index) == '零') {
                                sb.deleteCharAt(index);
                                flag = true;
                                index--;
                                continue;
                        }
                        // 如果前一位为零并且这一位也为零,删除这一位的零
                        if (flag && str.charAt(index) == '零') {
                                sb.deleteCharAt(index);
                                index--;
                                continue;
                        }
                        // 如果当前位为零,将零标志置为true
                        if (str.charAt(index) == '零') {
                                flag = true;
                                index--;
                                continue;
                        }
                        // 当前位不为零,将零标志位置为false,插入金额单位
                        flag = false;
                        sb.insert(index + 1, unit[i % 4]);
                        index--;
                }
                // 完善金额表示形式
                sb.append("圆整");

                return sb.toString();

        }
}

1 个回复

正序浏览
  // 每4位插入万,每8位插入亿
                        if (i % 4 == 0 && i != 0) {
                                // 根据金额规则,单位万前面有4个0时,不插入万位,并将最低位的零删除
                                if ((i / 4 - 1) % 2 == 0 && index >= 3
                                                && str.substring(index - 3, index + 1).equals("零零零零")) {
                                        sb.deleteCharAt(index);
                                        index--;
                                        continue;
                                }
这个看不懂?你们都是怎么做的呀!会的也可以给我说下!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马