为什么我必须在堆栈中两次初始化 -1 的顶部?



我目前正在研究堆栈,有一件事我不明白。我必须创建两个构造函数。我不明白的是,当我的程序已经堆叠了一些元素时,为什么我必须为我的第二个构造函数设置 -1 的 top?谢谢

public stack () { 
Array = new Object [MAX_ELEMENTS];
top = -1; 
}
public stack (int elements) { 
Array = new Object [elements]; 
top = -1; 
}

为什么我必须为我的第二个构造函数设置 -1 的顶部

通常,您不会这样做,但在这种情况下会这样做,因为有两个单独的构造函数不会相互调用。有几种更好的解决方案:

  1. top初始化,而不是在构造函数中:

    int top = -1;
    
  2. 链接构造函数:

    public stack () { 
    this(MAX_ELEMENTS);
    }
    public stack (int elements) { 
    Array = new Object [elements]; 
    top = -1; 
    }
    
  3. 双。

当我的程序已经堆叠了一些元素时?

不,它没有。它刚刚创建了一个您指定大小的数组。

除了另一个答案之外,您还可以使用实例初始值设定项:

{
top = -1;
}

无论构造函数用户是谁,都会调用它。

最新更新