我是想往数组b中插入一个数据,结果数据插入进去了,可原数组的数据都变成零了,难道是我传值不对?
代码如下,求指导:
package sequence;public class SeqList {
int data [];
int maxSize=10;
int length;
public SeqList(){
 data=new int[maxSize]; 
 length=0;
}

public SeqList(int a[]){

data=new int [maxSize];
data=a;
length=a.length;

}
public void DispList(){
for(int i=0;i<length;i++){
System.out.print(data[i]+",");
}
System.out.println("\n"+"线性表的长度"+length);
}
public String insert(int i,int value){

// i表示数据插入的位置,k表示插入的数据
data=new int [maxSize];
if(length==maxSize||i<1||i>length+1){
return "插入错误";
}else if(i<=length){
for(int j=length-1;j>=i-1;j--){
data[j+1]=data[j];

}
data[i-1]=value;
length++;

}
return "插入成功";
}
public static void main(String[] args) {
int b[]={1,2,3,5,4};
SeqList s=new SeqList(b);
s.insert(2, 6);
s.DispList();
}
}
执行结果:
0,6,0,0,0,0,
线性表的长度6

解决方案 »

  1.   


    public SeqList(int a[]){
            
            data=new int [maxSize];
            //data=a;
            for (int i = 0; i<a.length; i++){
             data[i] = a[i];
            }
            length=a.length;
            
        }public String insert(int i,int value){
        
    //        i表示数据插入的位置,k表示插入的数据
            //data=new int [maxSize];
            if(length==maxSize||i<1||i>length+1){
                return "插入错误";
            }else if(i<=length){
                for(int j=length-1;j>=i-1;j--){
                    data[j+1]=data[j];
                    
                }
                data[i-1]=value;
                length++;
                
            }
            return "插入成功";
        }
      

  2.   

    用 System.arraycopy(a,0,data,0,a.length); 替换data=a;insert() 里 注释掉  data=new int [maxSize];楼主的问题就是上面这句,data是新定义的了,初始值都是0。
      

  3.   


        public SeqList(int a[]){
            data = Arrays.copyOf(a, maxSize);
            length=a.length;
            
        }