非常简单的想法,我只是不确定为什么它不起作用。当我调用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);
}
}
}
答案 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]);