黑马程序员技术交流社区
标题:
数组应用:数字字符串转换成汉字字符串问题(中文读法)。。
[打印本页]
作者:
张旺达
时间:
2013-4-22 10:27
标题:
数组应用:数字字符串转换成汉字字符串问题(中文读法)。。
本帖最后由 张旺达 于 2013-4-22 12:17 编辑
public class Num2Rmb
{
private String[] hanArr = {"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
private String[] unitArr = {"拾","佰","仟"};
private String toHanStr(String numStr)
{
String result = "";
int numLen = numStr.length();
for (int i=0; i<numLen; i++)
{
//将char型数字转换成int型数字,因为ASCII码值正好相差48
int num = numStr.charAt(i)-48;
//如果不是最后一位数字,而且数字不是零,需要添加单位(千、百、十)
if(i!=numLen-1 && num !=0)
{
result += hanArr[num] + unitArr[numLen-2-i]; ---------------------- // 问题在这里!! 为什么是unitArr[numLen-2-i] ? 求解。
}
//不需要单位
else
{
result += hanArr[num];
}
}
return result;
}
public static void main(String[] args)
{
Num2Rmb nr = new Num2Rmb();
System.out.println(nr.toHanStr("6109"));
}
}
复制代码
作者:
续圆凯
时间:
2013-4-22 11:21
你可以这么思考:假如你在做这道题的时候,写到result += hanArr[num] + unitArr[numLen-2-i];这行代码的时候,不知道该如何定义unitArr[] 的角标, 你可以用一个数试试,比如你的6109. numLen=4, 你的当循环开始运行的时候,i=0,也就是在读你的数字最左边的一位,很明显numlen-1!=0而且num!=0. 此时就需要添加单位了。你的numLen=4,在i=0 的时候,循环读取的是千位上的数字,需要“千”这个单位,“千”=unitArr[2].这样算出 unitArr[ ]里面的角标需要做什么运算即可。
作者:
wanggang
时间:
2013-4-22 11:32
因为unitArr.length=3,所以numLen-x-i<3,当i=0,1,2;可算出x=2; 大概就是这个意思
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2