本帖最后由 郑飞 于 2014-10-1 01:12 编辑
刚开始写个大概,运行下,越界了,看不懂为啥,上代码:- /**
- * 金额转换,阿拉伯数字转换成中国传统形式。
- * 例如:101000001010 转换为 壹仟零壹拾亿零壹仟零壹拾圆整
- * 萬仟佰拾个圆整
- */
- class Test
- {
- public static void main(String[] args)
- {
- StringBuilder src = new StringBuilder();
- StringBuilder dest = new StringBuilder();
- src.append("101000001010");//初始化src
- System.out.println("src初始化完成:"+src);
-
- toRmb(src,dest);//调用方法将最终数据存入dest;
- System.out.println(dest);
- }
-
- public static void toRmb(StringBuilder src,StringBuilder desc)//每次截取8为,转中文,从src中移除,循环到src==null;
- {
- StringBuilder temp = new StringBuilder();//临时存放8位数中文;
-
- while(src!=null)
- {
- if(src.length()<=8)
- {
- temp.append(src);//倒入
- System.out.println("if temp:"+temp);
- System.out.println("if src:"+src);
-
- toChinese(temp,desc);
- break;
- }
-
- temp.append(src.substring(src.length()-8));//倒入
- src.delete(src.length()-8, src.length());//倒出
- toChinese(temp,desc);
- temp.delete(0, temp.length());//清空
- }
- }
-
- public static void toChinese(StringBuilder temp,StringBuilder desc)
- {
- //定义表格
- char[] nums = {'零','壹','贰','叁','肆','伍','陆','柒','捌','玖'};//数字转中文
- String[] units = {"拾","佰","仟","萬","拾萬","佰萬","仟萬","亿"};//单位
- char[] chs = temp.reverse().toString().toCharArray();//反转,转字符数组
- for(int i = 0; i < chs.length; i++)
- {
- int num = chs[i];
- desc.append(nums[num]);
- desc.append(units[i]);
- }
- }
- }
复制代码 上面这段是改通了 就实现了粗糙的中文打印,没啥用;最后能用的代码放在10楼了;
|