猿问

Java多个对象返回相同的信息

我正在尝试编写一个系统来确定电子游戏的武器类型和武器的伤害。我正在尝试实例化两种具有不同统计数据的武器,但是当我使用该方法时getType();,它们返回相同的东西。


我尝试使用 ArrayList,但从诸如此类的东西中获取了武器的类型(arraylist name here).get(0).getType();并且(arraylist name here).get(1).getType();仍然返回"AK-47"。


ArrayList<Weapon> weapons = new ArrayList<Weapon>();

        Weapon weapon = new Weapon("Desert Eagle", 5);

        Weapon weapon2 = new Weapon("AK-47", 3);


        weapons.add(weapon);

        weapons.add(weapon2);


        System.out.println(weapon.getType());

        System.out.println(weapon2.getType());

方法:


public class Weapon {

    static String type;

    static int damage;


    public Weapon(String type, int damage) {

        Weapon.type = type;

        Weapon.damage = damage;

    }


    public static String getType() {

        return type;

    }


}

我要weapon.getType();回去"Desert Eagle"再weapon2.getType();回去"AK-47"。


我知道这应该是一个简单的答案,但我可能只是为自己把这个问题复杂化了哈哈。任何帮助表示赞赏,谢谢!


紫衣仙女
浏览 177回答 3
3回答

胡子哥哥

static从type和damage中删除Weapon。static意味着全局类的一个值,而不是每个类实例一个值(这是你想要的)。this.type = type;另外,this.damage = damage;在构造函数中。public class Weapon {&nbsp; &nbsp; private String type;&nbsp; &nbsp; private int damage;&nbsp; &nbsp; public Weapon(String type, int damage) {&nbsp; &nbsp; &nbsp; &nbsp; this.type = type;&nbsp; &nbsp; &nbsp; &nbsp; this.damage = damage;&nbsp; &nbsp; }&nbsp; &nbsp; public String getType() {&nbsp; &nbsp; &nbsp; &nbsp; return type;&nbsp; &nbsp; }}此外,您目前没有使用您的任何值List(您保留了您创建的引用,并通过这些引用进行调用)。并且更喜欢编程而List不是ArrayList类型接口(你可以使用菱形运算符<>)。喜欢,List<Weapon> weapons = new ArrayList<>();weapons.add(new Weapon("Desert Eagle", 5));weapons.add(new Weapon("AK-47", 3));for (Weapon w : weapons) {&nbsp; &nbsp; System.out.println(w.getType());}产出Desert EagleAK-47

aluckdog

删除static关键字,因为它使字段在该类的每个实例之间共享static&nbsp;String&nbsp;type; static&nbsp;int&nbsp;damage;

繁花如伊

是因为你的类型是static的 改成private String类型;
随时随地看视频慕课网APP

相关分类

Java
我要回答