-3

很简单的想法,我只是不确定为什么它不起作用。当我调用 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

4 回答 4

2

一件事是:

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

同时

 stack[items] = add; //should also increment items 
于 2013-06-17T18:06:31.747 回答
1

您需要更新您的阵列。

我可以看到您的推送不会增加项目数。当您压入堆栈时,您还应该增加计数。

于 2013-06-17T18:06:27.950 回答
0

在您的构造函数中使用

 stack = new char[size];
于 2013-06-17T18:06:06.403 回答
0

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

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

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

System.out.println(stack[i]);
于 2013-06-17T18:06:23.173 回答