2015-11-03 101 views
-1

我需要創建一個隨機放置樹木和食物的地圖。對於我想要創建2d數組的地圖,然後使用類將樹和食物添加到數組中,這可能嗎?添加一個類到2d數組? Java

class Tree { 
 
\t char tsymbol; 
 
} 
 
class Food { 
 
\t char fsymbol; 
 
\t 
 
}

的類只需要具有存儲在他們現在一個符號,這將是其表示地圖上的對象的圖標。

public void printWorld(){ 
 
\t int a; 
 
\t int b; 
 
\t char[][] map = new char[15][12]; 
 

 
\t for (a=1; a<=15; ++a) 
 
\t { 
 
\t \t for (b=1; b<=12; ++b) 
 
\t \t { 
 
    \t \t \t foodsymbol.fsymbol = 1; 
 
    \t \t \t final String[] items = { }; 
 
    \t \t \t map[a][b] = 
 
\t \t \t \t 
 
\t \t \t System.out.print(map[1][1]); 
 
\t \t } 
 
\t \t System.out.printf("\n\n"); 
 
\t } 
 
}

到目前爲止,我有這個,忽略註釋因爲這是我以前的工作。這部分是我試圖將對象隨機添加到數組中,但是我在訪問此方法中的變量或類時遇到問題。

預先感謝任何幫助:)

+4

閱讀http://docs.oracle.com/javase/tutorial/java/nutsandbolts/array.html。注意數組的第一個索引是什麼。如果你打算將樹和食物添加到數組中,你認爲char [] []是合適的類型嗎? char數組包含什麼?它可以包含對象嗎?既然你想將對象存儲在數組中,它應該是什麼類型? –

+0

我只是假設char [] []會是最好的,因爲地圖主要是字符。我不知道如果一個數組能夠包含對象作爲新的java和oop的對象,也不確定是否有可能將對象存儲在數組中,並由一個字符表示? – Logic

+0

你首先需要真正決定你想**做什麼。你首先說要創建一個二維數組,然後使用類*將樹和食物添加到數組中。你說你想要一個字符數組。要麼使用類並存儲這些類的實例,要麼希望存儲字符。它不能同時存在。你發佈的代碼在樹和食物類中都沒有用。那麼,這些課程是爲了什麼? –

回答

1

對於您的特定應用,您可能還需要考慮使用enum。如果所有的樹都是相同的並且所有的食物都是相同的,這是有用的它可能看起來像這樣:

enum Item { 
    TREE ('t'), 
    FOOD ('f'); 

    private final char symbol; 
    Item(char symbol) { 
     this.symbol = symbol; 
    } 
    char getSymbol() { return symbol; } 
} 
class MyClass { 
    public void printWorld() { 
     Item[][] map = new Item[15][12]; 
     map[0][0] = Item.TREE; 
     map[0][1] = Item.FOOD; 
     System.out.print(map[0][0].getSymbol()); 
     System.out.print(map[0][1].getSymbol()); 
    } 
} 
+0

感謝您的幫助。我試圖將此添加到我的代碼,但我不確定如何調用該方法。我已經嘗試了以下,但得到一個錯誤。 MyClass worldnew = new MyClass(); \t \t worldnew.printWorld(); – Logic

+0

@LogicDoe你得到了什麼錯誤? –

+0

@LogicDoe另外,您以前如何調用'printWorld()'?如果您之前可以打電話,則無需改變您稱之爲的方式。 –

2

是的,你可以有對象的數組,並打印出來。要在同一個數組中使用不同類型的對象,它們都應該實現一個通用接口。例如:

interface MapObject { 
    public char getSymbol(); 
} 
class Tree implements MapObject { 
    char tsymbol = 't'; 

    @override 
    public char getSymbol() { 
     return tsymbol; 
    } 
} 
class Food implements MapObject { 
    char fsymbol = 'f'; 

    @override 
    public char getSymbol() { 
     return fsymbol; 
    } 
} 
class MyClass { 
    public void printWorld() { 
     MapObject[][] map = new MapObject[15][12]; 
     map[0][0] = new Tree(); 
     map[0][1] = new Food(); 
     System.out.print(map[0][0].getSymbol()); 
     System.out.print(map[0][1].getSymbol()); 
    } 
}