我是想往数组b中插入一个数据,结果数据插入进去了,可原数组的数据都变成零了,难道是我传值不对?
代码如下,求指导:
- Java code
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
------解决方案--------------------
- Java code
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 "插入成功"; }
------解决方案--------------------
用 System.arraycopy(a,0,data,0,a.length); 替换data=a;
insert() 里 注释掉 data=new int [maxSize];
楼主的问题就是上面这句,data是新定义的了,初始值都是0。
------解决方案--------------------
- Java code
public SeqList(int a[]){ data = Arrays.copyOf(a, maxSize); length=a.length; }