访问2D数组中的对象?

时间:2014-11-21 01:38:53

标签: java oop

我想在游戏中打印出一个项目的“重量”。

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)}};

我怎么能打印匕首的重量?例如?

2 个答案:

答案 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));

并打印整个数组获得有意义的结果。