求大整数和时,为啥会报数组越界异常?

源码码头 课程设计 1
package com.seqlist;

public class SeqList {

/**
 * @java.lang.ArrayIndexOutOfBoundsException
 */
public static void main(String[] args) {
    // TODO Auto-generated method stub
        int [] Adata={3,2,5,1,2,3,4,3};
        int [] Bdata={6,4,3,2,4,5,6};
        int flag=0;
        int n=Adata.length;
        int m=Bdata.length;
        int [] Cdata={};
        int i=0;
        int x=Cdata.length;
        while(i<n&&i<m){
            //数组越界,为什么为什么为什么????
            Cdata[i]=(Adata[i]+Bdata[i]+flag)%10;
            flag=(Adata[i]+Bdata[i]+flag)/10;
            i++;
        }
        for(;i<n;i++){
            Cdata[i]=(Adata[i]+flag)%10;
            flag=(Adata[i]+flag)/10;
        }
        for(;i<m;i++){
            Cdata[i]=(Bdata[i]+flag)%10;
            flag=(Bdata[i]+flag)/10;
        }
      x =Math.max(m,n)+flag;
      if(flag==1)Cdata[x-1]=1;

      for(int j=0;j<Cdata.length-1;j++) {
          System.out.print(Cdata[j]);
      } 
}   
}

回复

共2条回复 我来回复
  • 代码导航
    这个人很懒,什么都没有留下~
    评论
     int [] Cdata={};
        int i=0;
        int x=Cdata.length;
        System.out.println(x);
                输入结果为0,
                说明数组Cdata长度为0啊
                改成 int [] Cdata=new int[10];就可以了
    
    0条评论
  • 源码工坊
    这个人很懒,什么都没有留下~
    评论

    什么语言? 有的语言Cdata数组必须先初始化必须的长度,有的语言直接给Cdata[i]赋值会自动扩大数组。 你估计是前者吧。

    0条评论

发表回复

登录后才能评论