求助,为什么会数组越界


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"]转换为["壹佰贰拾叁元壹角壹分","贰万元整","壹分"]

#笔试题目#
全部评论

相关推荐

06-02 15:53
阳光学院 Java
点赞 评论 收藏
分享
05-11 20:45
门头沟学院 Java
有担当的灰太狼又在摸...:零帧起手查看图片
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务