-5

クラスブロック

public class block {    
public enum size {SMALL,MEDIUM,LARGE,XLARGE}
    public String color;public size sz;

public block(String color, size sz) {
    super();
    this.color = color;
    this.sz = sz;
}
     public block() {
    this.color="White";
    this.sz=sz.SMALL;

}

public String toString() {
    String result="My color is " + color + " and size=" + sz;
    return result;}

クラスrowOfBlock

public class rowofBlocks extends block{

        private block[] blocks;
private int numofBlocks;

public rowofBlocks(int numofBlocks){
    //super();
    this.numofBlocks=numofBlocks;
    generateBlocks() ;
}

private void generateBlocks() {

    this.blocks=new block[numofBlocks];

}

public String toString() {
    for(int a=0;a<blocks.length;a++)
    {

    System.out.print( blocks[a]);
    }
    String a="d";
    return a;
}
}

クラスgameMain

public class gameMain {

    public static void main(String[] args) {



block b=new block();
b.setSz(block.size.LARGE);
b.setColor("WHITE");

    rowofBlocks myrows=new rowofBlocks(3);
    System.out.println(b);
    System.out.println(myrows);
    }}

つまり、ブロックの配列を作成しようとすると、色が白ではなくnullnullnulldが表示されます。

4

1 に答える 1

0

の配列にnullクラスのオブジェクトを作成しないため、値を取得します。BlockRowOfBlocks

次を使用して配列を作成した後:

this.blocks = new block[numofBlocks];

のメソッド本体でgenerateBlocks()

それを繰り返して、実際のブロックを挿入する必要があります。

for(int i=0 ; i < this.blocks.length ; i++) {
     this.blocks[i] = new Block();
}
于 2012-05-26T12:01:25.717 に答える