没看懂“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")); }
}
unitArr = {"拾","佰","仟"};
本来numLen-i
就可以表达i
是这个数的第几位数,可是这里第四位数要的是仟
,在unitArr索引是2.
第三位,佰 ,索引是1;第二位,拾,索引是0.
如果unitArr={"无","个","拾","佰","仟"}
,这样直接用unitArr[numLen-i]
就可以拿到你要的文字,可是现在unitArr
少了头两个,你说,我们是不是该改成unitArr[numLen-i-2]
呢?