gpt4 book ai didi

java - 创建对象堆栈类 - 我哪里出错了?

转载 作者:行者123 更新时间:2023-12-02 07:38:52 25 4
gpt4 key购买 nike

我对 Java 还很陌生,我正在尝试创建一个使用对象数组的通用堆栈队列。我知道我做错了事情,即声明数组并分配数组长度。

有人可以看一下并给我一些反馈吗?

public class GeneralStack
{
GeneralStack [] stack; //not sure how to declare this
private int count;
private static final int DEFAULT_CAPACITY = 100;

//default constructor
public GeneralStack()
{
stack = new int[DEFAULT_CAPACITY];
count = 0;
}

//alternate constructor
public GeneralStack (int maxCapacity)
{
stack = new int[maxCapacity];
count = setCount;
}

//accessor getCount
public int getCount ()
{
return count;
}

//accessor isEmpty
public boolean isEmpty ()
{
boolean isEmpty=false;
if (count == 0);
{
isEmpty=true;
}
return isEmpty;
}

//accessor isFull
public boolean isFull ()
{
boolean isFull=false;
if (count == maxCapacity);
{
isFull=true;
}
return isFull;
}

//mutator push
public void push (int value)
{
if (isFull ())
{
throw new IllegalArgumentException("Stack is full");
}
else
{
stack[value]; //not sure how to assign value to the stack
count++;
}
}

//mutator pop
public void pop ()
{
int topVal = top();
count = count-1;
return topVal;
}

//accessor top
public int topVal ()
{
if (isEmpty())
{
throw new IllegalArgumentException("Stack is empty");
}
else
{
topVal=stack[count-1];
}
return topVal;
}
}

最佳答案

  1. stack似乎是一个元素类型的数组,push(int)告诉我是 int .
  2. 什么样的通用堆栈仅限于int
  3. setCount似乎本来打算是 maxCapacityGeneralStack(int)构造函数。
  4. 您的isEmpty()方法将无法正常工作,因为 if 之后有一个意外的分号健康)状况。 if (count == 0) ;意思是“如果count”等于零,什么都不做。您可能想要:

    if (count == 0) {
    isEmpty = true;
    }

    事实上,整个方法可以简化为一条语句。

  5. #3 中的相同问题也适用于 isFull() ,具有类似的缩写形式。你也没有maxCapacity范围内的变量...也许您忘记声明和初始化字段?
  6. 分配给堆栈应该改变与顶部对应的数组元素。
  7. pop()如果声明 void 则不应返回任何内容。另外,count = count - 1可以使用减量运算符来缩短,-- ,例如--count; .
  8. 您大概想命名 top() (从 pop() 的代码来看),你不小心命名为 topVal() 。此外,您永远不会声明 topVal方法范围内的变量。您可以重写该方法,通过直接从数组返回元素来完全不需要变量。

关于java - 创建对象堆栈类 - 我哪里出错了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11839454/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com