surplus-G 2021-03-21 14:42 采纳率: 33.3%
浏览 25
已结题

用Java创建的整形线性表为什么运行出来没有数据而是一一串地址呢?

package cheapter2_2;

public class Homework<E> {
    final int initcapacity = 10;
    public E[] data;
    public int size;
    private int capacity;
    
    //构造方法
    public Homework(){
        data = (E[])new Object[initcapacity];
        capacity = initcapacity;
        size = 0;
    }
    
    //创建线性表
    public void CreateList(E[] a)                    //由a整体建立顺序表
    {
        int i,k=0;
        for (i=0;i<a.length;i++) {
            if (size==capacity)                        //出现上溢出时
                updatecapacity(2*size);                        //扩大容量
            data[k]=a[i];
            k++;                                    //添加的元素个数增加1
        }
        size=k;                                        //设置长度
    }
    
    
    //更新容量
    public void updatecapacity(int newcapacity){
        E[] newdata = (E[]) new Object[newcapacity];
        for(int i = 0;i<size;i++)
            newdata[i] = data[i];
            capacity = newcapacity;
            data = newdata;
    }
    
    //创建删除方法:删除原线性表中值为负数的值
    public void RemoveNegativeNum(Homework E){
        for(int j = 0;j<size;j++){
            int x = (int) E.data[j];
            if(x<0)
            data[j] = data[j+1];
            size--;
        }
        if(capacity > initcapacity && size == capacity/4)
            updatecapacity(capacity/2);
    }

}

 

//测试类

package cheapter2_2;

public class HomeworkTest {
    public static void main(String[] args){
        
        Integer [] a={1,2,-1,-2,3,-3};
        Homework<Integer> L1=new Homework<Integer>();
        L1.CreateList(a);
        System.out.println("删除前L1:"+L1.toString());
        L1.RemoveNegativeNum(L1);
        System.out.println("删除后L1:"+L1.toString());
        
        Integer [] b={2,-1,-5,6,-7,4,-5,8};
        Homework<Integer> L2=new Homework<Integer>();
        L1.CreateList(b);
        System.out.println("删除前L2:"+L2.toString());
        L2.RemoveNegativeNum(L2);
        System.out.println("删除后L2:"+L2.toString());
        
    }
}
 

 

  • 写回答

2条回答 默认 最新

  • 阿哲.900 2021-03-21 14:50
    关注

    重写一下toSpring方法

     

    运行结果

    删除前L1:Homework{initcapacity=10, data=[1, 2, -1, -2, 3, -3, null, null, null, null], size=6, capacity=10}
    删除后L1:Homework{initcapacity=10, data=[1, 2, -2, -2, 3, -3, null, null, null, null], size=3, capacity=10}
    删除前L2:Homework{initcapacity=10, data=[null, null, null, null, null, null, null, null, null, null], size=0, capacity=10}
    删除后L2:Homework{initcapacity=10, data=[null, null, null, null, null, null, null, null, null, null], size=0, capacity=10}

    //新添加代码
        @Override
        public String toString() {
            return "Homework{" +
                    "initcapacity=" + initcapacity +
                    ", data=" + Arrays.toString(data) +
                    ", size=" + size +
                    ", capacity=" + capacity +
                    '}';
        }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 9月8日
  • 已采纳回答 8月31日

悬赏问题

  • ¥15 目详情-五一模拟赛详情页
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line