黑马程序员技术交流社区
标题:
............
[打印本页]
作者:
胡团乐
时间:
2012-6-8 01:10
标题:
............
本帖最后由 胡团乐 于 2014-8-24 09:53 编辑
............
作者:
飞舞❤心动
时间:
2012-6-8 09:26
牛!!!!!!
作者:
雷云红
时间:
2012-6-8 10:20
顶一个,楼主很厉害
作者:
嘿嘿小学徒
时间:
2013-1-4 12:25
这是我的,给大家参考
package com.itheima;
public class Test10 {
/**
* @param 黑马程序员
*
* @author 高一航
*/
public static void main(String[] args) {
String money = "103070805040"; //需要转换的钱(103070805040比101000001010复杂写,便于测试)
System.out.println(convert(money)); //打印出结果
}
public static String convert(String money) {
//下面两个字符数组,将阿拉伯数字和中国数字的大写 一一对应
char[] enNum = new char[] { '0', '1', '2', '3', '4', '5', '6', '7',
'8', '9' };
char[] cnNum = new char[] { '零', '壹', '贰', '叁', '肆', '伍', '陆', '柒',
'捌', '玖' };
char[] unit = new char[] { '仟', '0', '拾', '佰', '元', '万', '亿' }; //定义一个单位的字符数组,'0'只占个位置,没有特定的意义
for (int i = 0; i < enNum.length; i++) { //将传入的阿拉伯汉字一一转换成中文大写数字
money = money.replace(enNum[i], cnNum[i]);
}
// quotient定义了i除以4的商,remainder定义了余数
int quotient;
int remainder;
StringBuilder sb = new StringBuilder();//用于保存需要返回的结果
//从后向前遍历字符串中的每个数,放在i位置(个,十,百,千分别在1,2,3,4位置),index则指的是每个数在字符串中的下标
for (int i = money.length(), index = 0; i > 0; i--, index++) { //每次循环i自减,index自增;
quotient = i / 4; //判断这个数的数量级(万还是亿)
remainder = i % 4; //余数用于判断改数对应在unit字符数组中的单位;
if (money.charAt(index) == '零') { //当读到0的情况比较复杂单独拿出来考虑
if (remainder == 1) { //读到的数是0,而且该数处在应该添加万,亿单位的位置上
if (!money.substring(index - 3, index + 1).equals("零零零零")) { //判断之前没有出现过4个连续的0才添加万或者亿的单位
sb.append(unit[4 + quotient]);
}
}
continue; //添加完单位就应该跳出本次循环
}
//当读取到的数不是第一个数,且之前的一个数不是0,还要保证不是'万','亿'单位后紧跟着的数,此时才可以添加'零'
if (i != money.length()&&remainder!=0 && money.charAt(index - 1) == '零') {
sb.append('零');
}
sb.append(money.charAt(index)); //添加该不为零的数到字符串
if (remainder == 1) { //判断余数为1,就是应该添加'万','亿','元' 单位的时候了
sb.append(unit[4 + quotient]); //添加对应的单位
}else{
sb.append(unit[remainder]); //余数不为1则添加该数对应的'仟', '拾', '佰'单位
}
}
sb.append("整"); //最后添加个'整'
return sb.toString(); //返回给方法调用处;
}
}
复制代码
作者:
sun~~
时间:
2013-1-4 18:07
高一航 发表于 2013-1-4 12:25
这是我的,给大家参考
顶一个!! :)
作者:
韦振华
时间:
2013-3-29 03:56
算法有问题,本来很简单的问题被你弄的太复杂了,拜托别把程序写的太复杂,好好读读算法吧
作者:
范天成
时间:
2013-4-27 12:58
{:soso_e113:}这道题,谁能吧万亿以后的也搞出来
作者:
牛牛宝
时间:
2015-1-4 21:57
谢谢,学习学习
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2