【发布时间】:2021-05-21 17:18:55
【问题描述】:
我对 java 很陌生。所以我有一些代码应该将文件添加到堆栈并将堆栈内容与现有引用进行比较。这是应该创建堆栈的类:
public class ArrayStack<T> implements ArrayStackADT<T> {
private T[] stack;
private int top;
// constructor, passes default capacity
public ArrayStack() {
top = -1;
stack = (T[]) new Object[14];
}
// constructor, initializes capacity to stack and top
public ArrayStack(int initialCapacity) {
top = -1;
stack = (T[])new Object[initialCapacity];
}
}
这是调用堆栈的代码:
public static void main(String[] args){
StartSearch path = new StartSearch(args[0]);
int distance = Integer.parseInt(args[1]);
ArrayStack stack = new ArrayStack(); // creates empty stack
MapCell cell = path.targetMap.getStart(); // gets starting cell
stack.push(cell); // pushes starting cell to stack
}
不确定我是否显示了足够的代码,如果没有,请告诉我。我有一些推送和弹出方法来插入和删除堆栈项,并且对于每个推送/弹出,他们会打印“推送”+值:
if (dataItem instanceof MapCell) {
sequence += "push" + ((MapCell)dataItem).getIdentifier();
}
else {
sequence += "push" + dataItem.toString();
}
但由于某种原因,当我稍后进入打印序列时,它会输出以下内容:
nullpush0push2push3
而不是我需要它输出的内容:
push0push2push3
空堆栈是否自动具有空值或其他内容?如何去掉开头的空值?
【问题讨论】:
-
如果开头确实有一个
null值,它会 a) 写pushnull并且 b) 根本不这样做,而是抛出一个NullPointerException,因为你调用了一个方法dataItem为空。