使用数组创建堆栈,我做错了什么?

时间:2013-06-17 18:04:32

标签: java class stack

非常简单的想法,我只是不确定为什么它不起作用。当我调用Stack b = new Stack(5)时,我收到一个错误;在主要。

这是主要的

public class Test {

public static void main(String[] args) {
 Stack b = new Stack(5);
  b.push('a');
  b.push('b');
  b.push('c');
  b.printStack();

 }
 }

这是我的堆栈类

public class Stack {
 char[] stack;
 int items;

 public Stack(int size) {
 stack = char[size];
 items = 0;

 }

 public void push (char add){
   if (items == stack.length) {
   System.out.println("Stack is full");
  }
   else {
  stack[items] = add;
  }
 }


   public void printStack() {
  if (items == 0)
   return;
   else {
   for (int i = 0; i < items; i++)
  System.out.println(i);
  }
  }
   }

4 个答案:

答案 0 :(得分:3)

有一点是:

   public Stack(int size) {
     stack = new char[size];
        //^^^you missed new
     items = 0;
   }

同时

 stack[items] = add; //should also increment items 

答案 1 :(得分:2)

您需要新建阵列。

我可以看到你的推送没有增加项目数量。当你按下你的堆栈时,你也应该增加计数。

答案 2 :(得分:1)

在构造函数中使用

 stack = new char[size];

答案 3 :(得分:1)

在构造函数中创建new数组时,您没有使用stack关键字。

此外,您的push()方法不会增加items,因此会不断覆盖stack数组的第一个元素。

最后,您的printStack()方法无法按预期运行。相反,它将打印增量数字,直到数字5。您需要更改print语句才能正常工作。

System.out.println(stack[i]);