2014-11-21 177 views
-1

我想打印出我遊戲中物品的「重量」。訪問二維數組中的對象?

類, 「項目」:

public class Item { 

private String name; 
private double weight; 

public Item(String n, double w) 
{ 
    this.name = n; 
    this.weight = w; 
} 

}

在主類我有這段代碼:

public static Item[][] items = {{new Item("Dagger", 1), new Item("Sword", 5), new Item("Bullet(s)", 0), new Item("Pistol", 15)}, 
           {new Item("Torch", 2), new Item("Shovel", 5), new Item("Pickaxe", 10)}, 
           {new Item("Gold", 0), new Item("Potion(s)", 1)}}; 

我怎麼能打印匕首的重量,對於例?

+0

首先,你的'Item'類是不完整的。您的班級數據成員沒有「getter」或「accessor」方法。那麼,你如何期望打印出他們的價值呢?其次,你不會嘗試迭代數組。所以我不確定你在問什麼。 – hfontanez 2014-11-21 01:46:07

回答

2

除非我失去了一些東西,

System.out.println(items[0][0].getWeight()); 

當然,您的Item類將需要修改以包含訪問器,因爲這些字段是私有的(這是推薦的方法)。我建議你也使你的領域final所以類實例是不可變的。我也將重寫toString()

public class Item { 
    private final String name; 
    private final double weight; 

    public Item(String n, double w) { 
     this.name = n; 
     this.weight = w; 
    } 

    public String getName() { 
     return name; 
    } 

    public double getWeight() { 
     return weight; 
    } 

    @Override 
    public String toString() { 
     return String.format("%s %.3f", name, weight); 
    } 
} 

的首要toString()的好處是,你也可以使用Arrays.deepToString(Object[])

System.out.println(Arrays.deepToString(items)); 

,並得到打印整個陣列有意義的結果。

+0

items [0]會返回一個項目 – Maxqueue 2014-11-21 01:47:47

+0

的數組謝謝,你能解釋爲什麼這些字段應該是私人的(而不是公開的)?就像你說的。 – Arman 2014-11-21 01:57:18

+0

維基百科中的@Arman [** Encapsulation **](https://en.wikipedia.org/wiki/Encapsulation_%28object-oriented_programming%29)是一種(或兩種)*限制對某些*和*一種語言結構,便於將數據與在數據上運行的方法(或其他函數)捆綁在一起。* – 2014-11-21 02:08:05

2

首先,你需要一個吸氣劑在你的物品類的重量,因爲重量被宣佈爲私人。所以,如果你添加下面的方法來項:

Public Double GetWeight() 
    { 
     return this.weight; 
    } 

然後,你可以訪問達格爾如下所示:

Double weight = items[0][0].GetWeight(); 
    system.out.println(weight); 
+0

這對你Maxqueue很好。這個網站的重點是幫助人們解決問題,而不是爲他們解決問題。 – hfontanez 2014-11-21 01:48:06