求助,为什么会数组越界
package exam.meituan; import java.util.Scanner; public class Test1 {
public static void main(String args[]) { Scanner scan = new Scanner(System.in); String str = scan.nextLine(); str.replace("[", ""); str.replace("]", ""); str.replace("\"", ""); String []arr = str.split(",");//////把["123.11","20000.00","0.01"]转换为{"123.11","20000.00","0.01"}String字符串数组 int length = arr.length; String chinese = "["; for(int i=0; i<length-1; i++) { chinese = chinese + "\"" + toChinese(arr[i]) +"\",";//////这里报数组越界 } chinese = chinese + "\""+ toChinese(arr[length-1])+"\"]"; System.out.println(chinese); scan.close(); }
private static String []strnum = {"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"}; private static String []U1 = {"","拾","佰","仟"}; private static String []U2 = {"","万","亿"}; private static String []U3 ={ "元","角","分","整"}; public static String toChinese(String account) { String []a = account.split("."); String integer = a[0];//整数部分 String fraction = a[1];//小数部分 String result = ""; if (!integer.equals("0")) { result += integerToRMB(integer) + U3[0];//整数部分 } if(fraction.equals("00")) { result += U3[3];//添加整 } else if(fraction.startsWith("0") && integer.equals("0")) { result += fractionToRMB(fraction).substring(1);//如果只有分,去掉小数部分前面的零 } else { result += fractionToRMB(fraction);//小数部分 } return result; } //将金额小数部分转换为中文大写 public static String fractionToRMB(String fraction) { char jiao = fraction.charAt(0);//角 char fen = fraction.charAt(1);//分 return (strnum[jiao-'0'] + (jiao > '0'?U3[1]:"")) + (fen >'0'? strnum[fen - '0']+U3[2]:""); } //将金额整数部分转换为中文大写 public static String integerToRMB(String integer) { StringBuffer buffer = new StringBuffer(); int len = integer.length(); //从个位开始转换 for(int i=len-1, j=0; i>=0; i--, j++) { char charnum = integer.charAt(i); if(charnum == '0') { //当charnum为0,其右边一位不是0时,写入零; if(i<len-1 && integer.charAt(i+1) != '0') { buffer.append(strnum[0]); } //插入万或者亿 if(j%4 == 0) { if((i>0 && integer.charAt(i-1)!='0') || (i>1 && integer.charAt(i-1) != '0') || (i>3 && integer.charAt(i-3) != '0')) { buffer.append(U2[j / 4]); } } }else { if(j % 4 == 0) { buffer.append(U2[j / 4]);//c插入万或者亿 } buffer.append(U1[j / 4]);//插入拾、佰、仟 buffer.append(strnum[charnum - '0']);//插入数字 } } return buffer.toString(); } }
想请教一下,这里我想实现["123.11","20000.00","0.01"]转换为["壹佰贰拾叁元壹角壹分","贰万元整","壹分"]