我正在尝试创建一个堆栈数组,其中数组中的每个堆栈都是int
.
如果我像这样创建数组: Stack<Integer>[] numbers = new Stack<Integer>[3];
,则会出现编译错误“ Cannot create a generic array of Stack<Integer>
”。所以,我试图用通配符类型而不是创建堆栈数组Integer
,然后它就没有这个错误。
但是,如果我然后尝试像这样将一个int
堆栈(通配符“ ?
”类型)推入其中一个: this.numbers[stackIndex].push(i);
,则会出现编译错误“ The method push(capture#1-of ?) in the type Stack<capture#1-of ?> is not applicable for the arguments (int)
”。
那么,我怎样才能正确地实例化一个 Stacks 类型的数组int
呢?截至目前,我无法在这些堆栈上执行推送/弹出操作......
我的推理是尝试对河内塔游戏进行编程。我希望三个杆中的每一个都是 a
Stack
类型int
,每个环都表示为int
,并且三个杆一起包含为三个 Stacks 的数组。
这是一些示例代码:
import java.util.Stack;
public class StackTest {
Stack<?>[] numbers;
public StackTest(int stackLength) {
this.numbers = new Stack<?>[stackLength];
}
public void fillStack(int stackIndex, int numRings) {
for (int i = numRings; i >= 0; i--) {
// this statement has a compile error!
this.numbers[stackIndex].push(i);
}
}
public static void main(String[] args) {
int numberOfRods = 3;
StackTest obj = new StackTest(numberOfRods);
int rodNumber = 0, numberOfRings = 4;
obj.fillStack(rodNumber, numberOfRings);
}
} // end of StackTest