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日

悬赏问题

  • ¥30 关于用python写支付宝扫码付异步通知收不到的问题
  • ¥50 vue组件中无法正确接收并处理axios请求
  • ¥15 隐藏系统界面pdf的打印、下载按钮
  • ¥15 MATLAB联合adams仿真卡死如何解决(代码模型无问题)
  • ¥15 基于pso参数优化的LightGBM分类模型
  • ¥15 安装Paddleocr时报错无法解决
  • ¥15 python中transformers可以正常下载,但是没有办法使用pipeline
  • ¥50 分布式追踪trace异常问题
  • ¥15 人在外地出差,速帮一点点
  • ¥15 如何使用canvas在图片上进行如下的标注,以下代码不起作用,如何修改