将用户输入存储到变量中

用户输入没有更新相应的变量。当用户在提示时输入数字时,我正在尝试更新 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);



千万里不及你
浏览 202回答 3
3回答

守候你守候我

您所有的 setter 方法都遵循相同的问题(这就是为什么您应该遵循诸如 variables being 之类的约定camelCase),所以让我们选择其中的任何一个。public void setSta(double stamina){    this.Stamina = Stamina;}如您所见,您将类级别变量设置为Stamina等于变量Stamina。方法参数被调用stamina。所以你要设置this.Stamina的是它本身。

绝地无双

在java中变量是区分大小写的this.Dexterity = Dexterity;应该this.Dexterity = dexterity;否则他们指的是同一个变量

慕斯王

public void setDex(double dexterity) {    this.Dexterity = Dexterity;}首先,this.Dexterity = Dexterity;一定是this.Dexterity = dexterity;因为dexterity是需要赋值的变量Dexterity。而当您使用 时,实际上您正在分配的this.Dexterity = Dexterity;值 实际上是没有意义的。DexterityDexterity您编写的所有 setter 方法都有相同的问题。最后尝试保持命名约定。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java