【发布时间】:2013-03-09 22:26:50
【问题描述】:
我正在尝试创建一个堆栈数组,其中数组中的每个堆栈都是int 类型。
如果我这样创建数组:Stack<Integer>[] numbers = new Stack<Integer>[3];,则会出现编译错误“Cannot create a generic array of Stack<Integer>”。因此,我尝试使用通配符类型而不是 Integer 创建堆栈数组,然后 not 会出现此错误。
但是,如果我尝试将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)”。
那么,我怎样才能正确地实例化int 类型的堆栈数组呢?截至目前,我无法在这些堆栈上执行推送/弹出操作......
我的推理是尝试对河内塔游戏进行编程。我希望这三个杆中的每一个都是
int 类型的Stack,每个环都表示为int,并且三个杆一起包含为三个堆栈的数组。
这是一些示例代码:
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
【问题讨论】:
标签: java arrays stack wildcard towers-of-hanoi