2017-12-28 91 views
0

参考のために、私はJavaで高等学校の1クラスのようにしているので、この質問は非常に簡単に対応できるはずです。私は、パラメータの新しい値を入れずにクラスメソッド、つまりコンストラクタを新しいオブジェクトとして呼び出す方法を考え出すだけでは問題があります。パラメータ値をリセットせずにコンストラクタを参照していますか?

public Skills(int courage, int intelligence, int stamina, int crafting, 
    int blacksmithery, int herbalism, int slingSkill, 
    int bowSkill, int swordSkill, int armor, int stealth, int 
    lifeForceSkill){ 
     this.courage = courage; 
     this.intelligence = intelligence; 
     this.stamina = stamina; 
     this.crafting = crafting; 
     this.blacksmithery = blacksmithery; 
     this.herbalism = herbalism; 
     this.slingSkill = slingSkill; 
     this.bowSkill = bowSkill; 
     this.swordSkill = swordSkill; 
     this.armor = armor; 
     this.stealth = stealth; 
     this.lifeForceSkill = lifeForceSkill; 
} 

とするとき、私はそれそれ、私の主な方法私はこれを行うの確立:1にすべてのレベルを設定するには

Skills skills = new Skills(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1); 

をし、その後、私はで動作するようにオブジェクトのスキルを持っているコンストラクタは次のようになります後で。 (コンストラクタやオブジェクトの用語が混ざっていますか?それが間違っていれば、私はあなたの心の中でそれらをすべて切り替えます、私はそれと少なくとも一貫していると思います)。

問題は、スキルクラスのメインクラスの別のメソッドで呼び出したいtoString()メソッドがあることです。

else if (optionChoice.equalsIgnoreCase("View Skills")){ 
     Skills skills = new Skills(); 
     System.out.println(skills.toString()); 
     break; 
    } 

私がここで作成したオブジェクトは、もちろんスキル()を書くことはできないので、エラーを投げます。パラメータの12個の値をすべて入れずに。だから私はそれのためのオブジェクトを作成できないときにスキルクラスからメソッドを呼び出すのですか?値が変更されないようにするには、機能には不可欠です。プログラムによって変数が変更され、変更されるため、値を設定することはできません。

おそらく超基本的な質問だと思いますが、これは私がどのレベルの基本的な回答であれ助けてくれるレベルです。あまりにも多くの時間を費やすべきではありません。前もって感謝します!

+0

これは、実装のレベルが増えているので、これはstackoverflowのほうがよいかもしれません。質問、 'toString()'を実行するだけの新しい 'Skills'オブジェクトを作成しようとしていますか?あなたが最初に作成したonを変更すると、コンパイルエラーを修正しても表示されません。また、 'println()'は 'Object'を取るこ​​とができるので' System.out.println(skills) 'も同様に動作します。 'Object'の場合、自動的に' toString() 'を呼び出します。 –

+0

便利かもしれません:https://study.com/academy/lesson/static-vs-non-static-methods-in-java.html – algrid

答えて

1

スキルをメインメソッド内で作成するのではなく静的フィールドにするのはなぜですか?

public class WhateverYourClassIsCalled { 
    static Skills skills = new Skills(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1); 

    public static void main(String[] args) { 
     // ... 
    } 

    void yourOtherMethod() { 
     // ... 
     else if (optionChoice.equalsIgnoreCase("View Skills")) { 
      System.out.println(skills.toString()); 
      break; 
     } 
    } 
} 
+1

または、静的なグローバルを避けるには、必要なメソッドを渡します。yourOtherMethod(スキル); – CandiedOrange

関連する問題