如何在Java中实现有界堆栈

如何在Java中实现有界堆栈,java,stack,Java,Stack,我需要帮助的是: 什么是使isEmpty()和isFull()方法返回一个答案来告诉我堆栈是空的还是满的正确代码 我需要将我使用的堆栈设置为五(5)个大小(堆栈可以容纳5个整数) 我需要在push()和pop()方法中添加异常,当堆栈已满时不允许使用push,当堆栈为空时不允许使用pop import java.util.ArrayList; 导入java.util.List; 公共类整数堆栈{ 私有列表栈; 公共整数堆栈(整数大小){ 堆栈=新阵列列表(大小); } /*方法来推动堆栈*/

我需要帮助的是:

  • 什么是使isEmpty()和isFull()方法返回一个答案来告诉我堆栈是空的还是满的正确代码

  • 我需要将我使用的堆栈设置为五(5)个大小(堆栈可以容纳5个整数)

  • 我需要在push()和pop()方法中添加异常,当堆栈已满时不允许使用push,当堆栈为空时不允许使用pop


  • import java.util.ArrayList;
    导入java.util.List;
    公共类整数堆栈{
    私有列表栈;
    公共整数堆栈(整数大小){
    堆栈=新阵列列表(大小);
    }
    /*方法来推动堆栈*/
    公共无效推送(int i){
    叠加(0,i);
    }
    /*方法来弹出堆栈*/
    公共int-pop(){
    如果(!stack.isEmpty()){
    int i=stack.get(0);
    堆栈。移除(0);
    返回i;
    }否则{
    返回-1;//或任何无效值
    }
    }
    /*方法查看堆栈*/
    公共int peek(){
    如果(!stack.isEmpty()){
    返回stack.get(0);
    }否则{
    返回-1;//或任何无效值
    }
    }
    /*确定堆栈是否为空*/
    公共布尔值为空(){
    stack.isEmpty();
    }
    /*确定堆栈是否已满*/
    公共布尔值isFull(){
    stack.isFull();
    }
    /*确定堆栈的大小*/
    公共整数大小(){
    if(stack.isEmpty())
    返回0;
    其他的
    返回stack.size();
    }
    }
    
    1。 如注释中所述,看起来您只是缺少isEmpty()函数上的
    return
    关键字:

    /* determine if the stack is empty */
    public boolean isEmpty() {
        return stack.isEmpty();
    }
    
    但是,对于
    isFull()
    函数,
    List
    类上没有
    isFull()
    函数,您必须自己实现它。您必须跟踪通过构造函数传入的整数,以便将其与存储在对象中的列表大小进行比较

    二,。 您是应该允许此对象的用户指定他们想要的任何
    大小
    ,还是应该始终有5个整数限制

    三,。
    您可能想在

    上阅读Java文档的这一部分。在询问之前,您是否真的看了一下如何做?看起来你只是复制粘贴了一个你没有得到的代码

    import java.util.ArrayList;
    import java.util.List;
    
    public class IntegerStack {
    
    private int max_size;
    private List<Integer> stack;
    
    public IntegerStack(int size) {
        max_size = size;
        stack = new ArrayList<Integer>(size);
    }
    
    /* method to push the stack */
    public void push(int i) {
            stack.add(0, i);
    }
    
    /* method to pop the stack */
    public int pop() {
        if (!stack.isEmpty()) {
            int i = stack.get(0);
            stack.remove(0);
            return i;
        } else {
            return -1;// Or any invalid value
        }
    }
    
    /* method to peek at the stack */
    public int peek() {
        if (!stack.isEmpty()) {
            return stack.get(0);
        } else {
            return -1;// Or any invalid value
        }
    }
    
    /* determine if the stack is empty */
    public boolean isEmpty() {
        return stack.isEmpty();
    }
    
    /* determine if the stack is full */
    public boolean isFull() {
        //go through all your stack and see if there are things not set to get if it's full.
    }
    
    /* determine the size of the stack */
    public int size() {
        if (stack.isEmpty())
            return 0;
        else
            return stack.size();
    }
    }
    
    import java.util.ArrayList;
    导入java.util.List;
    公共类整数堆栈{
    私有整数最大值;
    私有列表栈;
    公共整数堆栈(整数大小){
    最大尺寸=尺寸;
    堆栈=新阵列列表(大小);
    }
    /*方法来推动堆栈*/
    公共无效推送(int i){
    叠加(0,i);
    }
    /*方法来弹出堆栈*/
    公共int-pop(){
    如果(!stack.isEmpty()){
    int i=stack.get(0);
    堆栈。移除(0);
    返回i;
    }否则{
    返回-1;//或任何无效值
    }
    }
    /*方法查看堆栈*/
    公共int peek(){
    如果(!stack.isEmpty()){
    返回stack.get(0);
    }否则{
    返回-1;//或任何无效值
    }
    }
    /*确定堆栈是否为空*/
    公共布尔值为空(){
    返回stack.isEmpty();
    }
    /*确定堆栈是否已满*/
    公共布尔值isFull(){
    //检查你所有的堆栈,看看是否有未设置的东西,如果它已满。
    }
    /*确定堆栈的大小*/
    公共整数大小(){
    if(stack.isEmpty())
    返回0;
    其他的
    返回stack.size();
    }
    }
    
    创建对象时,将5作为参数。您可能需要对代码进行其他更改;)


    你自己试试看,你会有更大的提高:D

    你应该正确地缩进你的代码,当你错过return关键字时,阅读它确实很困难。返回stack.isEmpty();返回stack.isFull();如果这是一个堆栈,为什么在推送时必须提供一个位置?您还可以参考java.util.Stack类以获得更多帮助。推送方法是错误的。列表界面没有提供
    isFull()
    方法。我没有说这是答案,而是找到答案的一种方法;)这家伙似乎一点也没有寻找答案,这就是为什么;)即使您通过存储
    max_size
    属性给出了有用的提示,也没有理由提供错误的代码(对于
    push
    方法)。我不想给出错误的代码,对此我很抱歉^^^我将其更改回了原始版本
    import java.util.ArrayList;
    import java.util.List;
    
    public class IntegerStack {
    
    private int max_size;
    private List<Integer> stack;
    
    public IntegerStack(int size) {
        max_size = size;
        stack = new ArrayList<Integer>(size);
    }
    
    /* method to push the stack */
    public void push(int i) {
            stack.add(0, i);
    }
    
    /* method to pop the stack */
    public int pop() {
        if (!stack.isEmpty()) {
            int i = stack.get(0);
            stack.remove(0);
            return i;
        } else {
            return -1;// Or any invalid value
        }
    }
    
    /* method to peek at the stack */
    public int peek() {
        if (!stack.isEmpty()) {
            return stack.get(0);
        } else {
            return -1;// Or any invalid value
        }
    }
    
    /* determine if the stack is empty */
    public boolean isEmpty() {
        return stack.isEmpty();
    }
    
    /* determine if the stack is full */
    public boolean isFull() {
        //go through all your stack and see if there are things not set to get if it's full.
    }
    
    /* determine the size of the stack */
    public int size() {
        if (stack.isEmpty())
            return 0;
        else
            return stack.size();
    }
    }