0

Floorブロックを持つクラスがあり、Stackそれを初期化する方法がわかりません。私はこのように試しました:

public class Floor {
    private Stack<Block> stack;
    private static int size;
    public void setStack(Stack<Block> stack) {
        this.stack = stack;
    }
    public void addBlock(Block b){
        stack.push(b);
    }
}

public class InputDevice {
    Block a0=new Block('I',false);
    Floor [] floor=new Floor[5];
    Stack<Block> stack=new Stack<Block>();
    floor[0].setStack(stack);
    floor[0].addBlock(a0);
}
4

3 に答える 3

5
Floor [] floor=new Floor[5];

配列を宣言しましたが、要素を初期化しなかった場合:

floor[0].setStack(stack);floor[0] は null です。

Floorまた、クラス、addBlock(Block b)メソッドで、スタックがnullかどうか、nullの場合は確認することをお勧めします。

于 2013-01-12T11:33:47.900 に答える
2

配列内の Floor オブジェクトをまだ初期化していません。オブジェクトの配列を作成することは、卵のパックを作成するようなものです。最初にカートンに卵を入れるまで、卵を使用することはできません. 初期化する前に配列内のオブジェクトを使用することはできません。これは多くの場合、for ループ内で行われます。つまり、

Floor [] floor=new Floor[5];
for (int i = 0; i < floor.length; i++) {
  floor[i] = new Floor();
}
于 2013-01-12T11:32:32.377 に答える
0

このコードを試してください

public class Floor {
    private Stack<Block> stack;
    private static int size;
    public void setStack(Stack<Block> stack) {
        this.stack = stack;
    }
    public void addBlock(Block b){
        stack.push(b);
    }
}

public class InputDevice {
    Block a0=new Block('I',false);
    Floor [] floor=new Floor[5];
    floor[0] = new Floor();
    Stack<Block> stack=new Stack<Block>();
    floor[0].setStack(stack);
    floor[0].addBlock(a0);
}
于 2013-01-12T11:35:56.473 に答える