0

私はJavaでハノイの塔ゲームをプレイするプログラムを書いています。タワーを表すためにスタックを使用します。3つのスタックのアレイがあります。そのうちの2つは空になるように初期化し、最後の1つはユーザー定義のディスク数で埋めます。整数を取り込んでそのサイズのディスクを作成するHanoiコンストラクターを使用できるように、指定されたHanoiクラスファイルがあります。初期化メソッドでディスクをスタックにプッシュするコードを理解するのに問題があります(ディスクのサイズは位置のミラーであるため、ディスク1のサイズは1などです)。

これが私のハノイクラスのディスクコンストラクターです:

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;

これにより、それらすべてが空になるように初期化されます。では、ユーザー入力に基づいてディスクごとに新しいハノイオブジェクトを作成し、それらを逆の順序でスタックにプッシュする必要がありますか?

4

1 に答える 1

1

ユーザー入力に基づいてディスクごとに新しい hanoi オブジェクトを作成し、それらを逆の順序でスタックにプッシュする必要がありますか?

はい。

for (int i = numDisc; i > 0; --i)
    tower[0].push(new Hanoi(i));
于 2011-10-22T21:45:57.870 に答える