-4

後で子クラスで改訂されたスーパークラスで定義された変数にアクセスするコードに関連する問題がいくつかありました。いえ

  //start of Stat class. Variables in question are defined here. (Name, Level,        Experience, totalXP)
public class Stat {

public static String Name = " ";
    public static int Level = 0;
    public static double Experience = 0;
    public static double totalXP = 0;

    //Sets Name
    public static void setName(String NameIn) {
            Name = NameIn;
    }
    //Sets Level
    public static void setLevel(int LevelIn) {
            Level = LevelIn;
    }
    //Sets Experience
    public static void setExperience(double ExperienceIn) {
            Experience = ExperienceIn;
    }
    //Sets totalXP
    public static void settotalXP(double totalXPIn) {
            totalXP = totalXPIn;
    }


    //Sets up Attributes
    public static void setall() {
            setName("Herp");
            setLevel(1);
            setExperience(0);
            settotalXP(0);


    }



    //Displays a Stat's Attributes
    public static void DisplayLevel() {

            System.out.println(Name);
            System.out.println("Level: " + Level);
            System.out.println(Experience + " out of " + totalXP + " total     experience.");

    }//End of method

    public static void Levelup() {

            if(Experience >= totalXP) {

                    Level++;
                    totalXP = totalXP * 1.3;
                    Experience = 0;

            }//end of if statement

    }//end of Levelup method

}//end of Stat.class





public class Agility extends Stat{

    {//Revisionary Block
            Name = "Agility";
            Level = 1;
            Experience = 0;
            totalXP = 125;
    }



    public static int runnappDodge(int Dodge) {
            Random generator = new Random(10);


            Dodge = generator.nextInt(10);
            if (Dodge == 0) {

                    Player.incomingDMG = 0;

         }//end of if statement
            return Dodge;


            }



//start of the method located on player.class. This prints out " ", 0.0 and 0.0 for all         //of the fields.

public static void checkLevel() {

            System.out.println("You are level: " + Level);
            System.out.println("You have " + experience + " experience out of " +     totalXP + " total experience");
            System.out.println(stat.Attack.Name + " Level: " + stat.Attack.Level + ":     Experience: " + stat.Attack.Experience + "/" + stat.Attack.totalXP);
            System.out.println(stat.Archery.Name +" Level: " + stat.Archery.Level +":     Experience: " + stat.Archery.Experience + "/" + stat.Archery.totalXP);
            System.out.println(stat.Agility.Name +" Level: " + stat.Agility.Level + ":     Experience: " + stat.Agility.Experience + "/" + stat.Agility.totalXP);

    }//end of checkLevel method

私の完全なコードはここにあります: http://pastebin.com/6nPGwJQe

reddit は役に立たなかったので、あなたに頼ります。(あなたが役に立たないというわけではありませんが、私はredditをもっと使っているので、より便利です). 私のコードはサブクラスの変数を更新する必要があると思いますが、そうではありません。変数を参照すると、スーパークラスで定義されたときとまったく同じになり、Aaron.name の場合は、「Aaron」ではなく「」になります。ここでゲッターとセッターが役立つかどうかはわかりませんが、すべてのアドバイスに感謝します

PS: stackoverflow に関する最初の質問です!

編集:フィードバックをありがとう。これはサンプルコードでした。最後のコメンターは大いに役立ちましたが、私の実際のコードはこれとは完全に独立しています。それは例を伝えることでした。そのコードが本当に重要なので、リンクを参照してください。編集2:インポートと参照のためにプロジェクトの構造を確認する必要があるかもしれないことがわかるので、ここに私のプロジェクト構造の画像があります:http://imgur.com/VhDzRrm

編集 3: 私の投稿では、間違った例を使用するのではなく、実際のコードを使用しています。

4

2 に答える 2

1

Java では、大文字と小文字の区別が非常に明確です。Derp クラスを拡張したので、Aaron クラスには 2 つの String フィールドがあります。名前と名前。名前の文字列を "" にインスタンス化したため、何も表示されないのはそのためです。Aaron.Name に置き換えると、探しているものが得られます。

于 2013-08-07T01:43:15.907 に答える