用户输入没有更新相应的变量。当用户在提示时输入数字时,我正在尝试更新 Dexterity 变量。我创建了一个 setDex 方法,当添加到 getDex 方法时,它应该接受用户输入量并更新它。getDex 方法应该检索变量的当前值。public class SetAttributes { double Dexterity; double Strength; double Intelligence; double Stamina; double SkillPoints = 50; public SetAttributes() { this.setDex(0); this.setStr(0); this.setInt(0); this.setSta(0); this.setSkillPoints(50); } public double getSP(){ return SkillPoints; } public double getDex() { return Dexterity; } public double getStr(){ return Strength; } public double getInt(){ return Intelligence; } public double getSta(){ return Stamina; } public void setDex(double dexterity) { this.Dexterity = Dexterity; } public void setStr(double strength){ this.Strength = Strength; } public void setInt(double intelligence){ this.Intelligence = Intelligence; } public void setSta(double stamina){ this.Stamina = Stamina; } public void setSkillPoints(double skillPoints) {this.SkillPoints = SkillPoints;};}public final class PointSpender { public static void Spend(){ SetAttributes Attribute = new SetAttributes(); Scanner SkillChoice = new Scanner(System.in); System.out.println("What skill do you want to increase? Dex, Str, Sta, or Int?"); switch(SkillChoice.nextLine().charAt(0)){ case 'd': System.out.println("How many points towards Dexterity?"); System.out.println("Your current Dexterity is " + Attribute.Dexterity); double amount = SkillChoice.nextDouble(); Attribute.setDex(amount + Attribute.getDex()); System.out.println(Attribute.Dexterity);
3 回答
守候你守候我
TA贡献1802条经验 获得超10个赞
您所有的 setter 方法都遵循相同的问题(这就是为什么您应该遵循诸如 variables being 之类的约定camelCase),所以让我们选择其中的任何一个。
public void setSta(double stamina){
this.Stamina = Stamina;
}
如您所见,您将类级别变量设置为Stamina等于变量Stamina。方法参数被调用stamina。所以你要设置this.Stamina的是它本身。
绝地无双
TA贡献1946条经验 获得超4个赞
在java中变量是区分大小写的
this.Dexterity = Dexterity;
应该
this.Dexterity = dexterity;
否则他们指的是同一个变量
慕斯王
TA贡献1864条经验 获得超2个赞
public void setDex(double dexterity) {
this.Dexterity = Dexterity;
}
首先,this.Dexterity = Dexterity;一定是this.Dexterity = dexterity;因为dexterity是需要赋值的变量Dexterity。而当您使用 时,实际上您正在分配的this.Dexterity = Dexterity;值 实际上是没有意义的。DexterityDexterity
您编写的所有 setter 方法都有相同的问题。
最后尝试保持命名约定。
添加回答
举报
0/150
提交
取消
