我想在游戏中打印出一个项目的“重量”。
Class,“Item”:
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 :(得分:2)
首先,您需要在Item类中使用getter来获取重量,因为权重被声明为私有。因此,如果您将以下方法添加到项目:
Public Double GetWeight()
{
return this.weight;
}
然后您可以像以下一样访问Daggar:
Double weight = items[0][0].GetWeight();
system.out.println(weight);
答案 1 :(得分: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));
并打印整个数组获得有意义的结果。