一道关于数组的例题,红色部分没看懂
没看懂“numLen - 2 - i”的含义,高手帮帮忙
import java.util.Arrays;
public class Num2Rmb{
private String[] hanArr = {"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
private String[] unitArr = {"拾","佰","仟"};
private String[] divide(double num){ long zheng = (long)num;
long xiao = Math.round((num - zheng) * 100);
//把整数转换为字符串,两种方法
return new String[]{zheng + "", String.valueOf(xiao)};
}
private String toHanStr(String numStr){
String result = "";
int numLen = numStr.length();
for(int i = 0; i < numLen; i++){
//把char类型数字转换成int,因为他们的ASCII码值恰好相差48
//因此把char型数字减去48得到int型数字,例如'4'被转换成4。
int num = numStr.charAt(i) - 48;
//如果不是最后一位数字,而且数字不是零,则需添加单位(千百十)
if(i != numLen - 1 && num != 0){
result += hanArr[num] + unitArr[numLen - 2 - i]; // 没搞懂这个 numLen-2-i
}
else{
result += hanArr[num];
}
}
return result;
}
public static void main(String[] args){
Num2Rmb nr = new Num2Rmb();
System.out.println(Arrays.toString(nr.divide(236711125.123)));
System.out.println(nr.toHanStr("6109"));
}
}
回答:
unitArr = {"拾","佰","仟"};
本来numLen-i
就可以表达i
是这个数的第几位数,可是这里第四位数要的是仟
,在unitArr索引是2.
第三位,佰 ,索引是1;第二位,拾,索引是0.
如果unitArr={"无","个","拾","佰","仟"}
,这样直接用unitArr[numLen-i]
就可以拿到你要的文字,可是现在unitArr
少了头两个,你说,我们是不是该改成unitArr[numLen-i-2]
呢?
以上是 一道关于数组的例题,红色部分没看懂 的全部内容, 来源链接: utcz.com/p/171076.html