0
我正在编写一个程序来玩Java的河内游戏塔。我们将使用堆栈来表示塔。我有3个堆栈,其中两个我初始化为空,最后一个填充用户定义数量的光盘。我有一个Hanoi类文件,因此我们可以使用Hanoi构造函数,它接受一个整数并创建一个具有该尺寸的光盘。我很难找出代码,以我的初始化方法将光盘推入堆栈(它们的大小是其位置的镜像,因此光盘1的大小为1等)。任何帮助都将不胜感激。使用堆栈在Java中的河内塔
这里是我河内类光盘构造:
public class Hanoi{
private int discSize; //size (radius) of the disc
public Hanoi(int size){ //creates a disk of the specifed size
discSize = size;
}
我的初始化方法
public static Stack<Hanoi>[] initialize(int n){
System.out.println("How many discs in the game?");
Scanner sc = new Scanner(System.in);
int numDisc = sc.nextInt();
int size = numDisc;
Stack<Hanoi>[] tower = new Stack[3];
for (int i = 0; i < 3;i++){
tower[i] = new Stack<Hanoi>();
}
}
Hanoi.PrintStacks(tower);
// System.out.println(hanoi[2].peek());
return tower;
这应该初始化所有的人都为空。那么我应该根据用户输入为每个磁盘创建一个新的Hanoi对象,并按相反顺序将它们推入堆栈?
首先,这是功课吗?如果是这样,应该标记为“功课”。其次,你正在初始化太多次:第一个循环就足够了。在第二个和第三个,你只是分别覆盖第二,第三个单元格和第三个单元格。 – MaDa
出于好奇,你是否恰好在温莎大学学习?我建议有三个类来模拟问题:河内,Peg和Disk。河内将拥有Pegs A,B和C.每个Peg都会有一堆磁盘。 – erisco
是的,这是作业,谢谢你,我会修复初始化。我应该将第一个塔初始化为包含大小为1-n的光盘的堆栈。 – NU2JAVA