首页 > 一道关于数组的例题,红色部分没看懂

一道关于数组的例题,红色部分没看懂

没看懂“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]呢?

【热门文章】
【热门文章】