当前位置: 代码迷 >> J2SE >> 关于线性表中出入的有关问题
  详细解决方案

关于线性表中出入的有关问题

热度:130   发布时间:2016-04-24 01:17:59.0
关于线性表中出入的问题
我是想往数组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;            }
  相关解决方案