我正在尝试编写一个系统来确定电子游戏的武器类型和武器的伤害。我正在尝试实例化两种具有不同统计数据的武器,但是当我使用该方法时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"。我知道这应该是一个简单的答案,但我可能只是为自己把这个问题复杂化了哈哈。任何帮助表示赞赏,谢谢!
3 回答
胡子哥哥
TA贡献1825条经验 获得超6个赞
static从type和damage中删除Weapon。static意味着全局类的一个值,而不是每个类实例一个值(这是你想要的)。this.type = type;另外,this.damage = damage;在构造函数中。
public class Weapon {
private String type;
private int damage;
public Weapon(String type, int damage) {
this.type = type;
this.damage = damage;
}
public String getType() {
return type;
}
}
此外,您目前没有使用您的任何值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) {
System.out.println(w.getType());
}
产出
Desert Eagle
AK-47
添加回答
举报
0/150
提交
取消