为了账号安全,请及时绑定邮箱和手机立即绑定

调整大小功能时遇到问题

调整大小功能时遇到问题

肥皂起泡泡 2023-07-19 15:47:15
我正在为实验室编写一个调整大小的函数,但我不断收到错误线程“main”中的异常 java.lang.OutOfMemoryError:Java 堆空间private E[] a, b;  // holds the itemsprivate int N;       // number of items in stack// create an empty stack with given capacitypublic RArrayStack() {    a = (E[]) new Object[8];    N = 0;}public boolean isEmpty() {    return N == 0;}public boolean isFull() {    return N == a.length;}public void push(E item) {    if (!this.isFull()) {        a[N++] = item;    } else {        this.resize();    }}public E pop() {    return a[--N];}public E peek() {    return a[N - 1];}public E[] resize(){        b = (E[]) new Object[a.length*2];        for (int i = 0; i < a.length ; i++) {            b[i] = a[i];        }        a = b;    return resize();}
查看完整描述

1 回答

?
慕莱坞森

TA贡献1810条经验 获得超4个赞

在你的resize()函数中:


public E[] resize(){

        b = (E[]) new Object[a.length*2];

        for (int i = 0; i < a.length ; i++) {

            b[i] = a[i];

        }

        a = b;


    return resize();

}

您无条件地调用resize()return,这意味着该方法将递归,直到您尝试为 new 分配足够的内存为止b。而不是return resize(),你想返回a


查看完整回答
反对 回复 2023-07-19
  • 1 回答
  • 0 关注
  • 92 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信