java - 一道关于数组的例题,红色部分没看懂
PHP中文网
PHP中文网 2017-04-17 11:41:10
[Java讨论组]

没看懂“numLen - 2 - i”的含义,高手帮帮忙

import java.util.Arrays;

public class Num2Rmb{
private String[] hanArr = {"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
private String[] unitArr = {"拾","佰","仟"};

    private String[] pide(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.pide(236711125.123)));
        System.out.println(nr.toHanStr("6109"));
    }   

}

PHP中文网
PHP中文网

认证0级讲师

全部回复(1)
大家讲道理

unitArr = {"拾","佰","仟"};

本来numLen-i就可以表达i是这个数的第几位数,可是这里第四位数要的是,在unitArr索引是2.
第三位,佰 ,索引是1;第二位,拾,索引是0.

如果unitArr={"无","个","拾","佰","仟"},这样直接用unitArr[numLen-i]就可以拿到你要的文字,可是现在unitArr少了头两个,你说,我们是不是该改成unitArr[numLen-i-2]呢?

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号