2014-11-21 180 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