2012-03-12 23 views
-1

ローカル変数の考え方は、変数を初期化するメソッドとその初期化された変数を使用する別のメソッドを必要とする場合、少し難解です。Java - クラス内のいくつかのメソッドで変更/変更された変数を使用する方法は?

public class abc 

public int startAngle; 

public void angleMethod(){ 
startAngle = 90; 
angle = startAngle; 
} 

public void methodTwo(){ 
anotherVar = angle + 10; //I want this angle to be initialized to 90 

すでに可能第一の方法により、90に初期化の角度を持っていますか?私がこれをしたい理由は、私がやりたいことをより小さな個別の方法に変えることができるようにするためです。

私は、第二の方法では、引数として変数を渡すようなものを試みた:

public void methodTwo(int angle) 

をしかし、それは動作しませんでした。

私は

this.angle = angle 

を使用しての読みが、イムこれが何をするかわからまたはその目的ではありませんしました。私は変数に何かをして、それらの変更された変数を私のプログラムの他の部分で使う必要があると私は信じています。

誰でもお手伝いできますか?ありがとう。

+2

それは(少なくとも私には)混乱思えるよう私たちに多くのあなたがしようとしているだけで何の詳細とその理由を教えてください。あなたの本当のコードも教えてください。クラスはいつ構築され、何が構築されますか?いつ、そして誰が2つの方法を呼び、それは常に次々と呼ばれていますか?おそらく、あなたは一定の値を使用しようとしていますか?私は本当に伝えることはできません。 –

+0

あなたが示した 'コード'のどこにも、変数 'angle'が宣言されていません。 – Perception

答えて

1

あなたはローカル変数が何であるか理解していないと思います。あなたの例では、angleangleMethod()は、anglemethodTwo()と異なります(提供されるコードに基づいて、どこに宣言しているかはわかりませんが)。

私はこのようなものは、あなたがのために行くしているものだと思う:

public class abc 
{ 
    //Declare class-scoped variables, accessible by all class methods. Could be public or private. 
    public int startAngle; 

    //constructor - initialize vars here 
    public abc() 
    { 
     startAngle = 90; 
    } 

    public void method() 
    { 
     int angleVar = startAngle + 10; //startAngle will be 90. 
     //angleVar will be 100; 
     //angleVar can only be accessed inside this method. 
    } 
} 
+0

これまでの返答ありがとうございます、私は愚かになりました – WeylandYutani

0

オブジェクトが作成されたとき、属性を初期化したい場合は、次の2つのオプションがあります。

  • デフォルト値

    int startAngle = 90 
    
  • 逢引コンストラクタ(S)(すべての)中を

これ以外に、他のメソッドが呼び出し前に呼び出されているかどうかを確認したい場合(例えば、最初に呼び出されなければならないメソッドは属性を設定し、もう一方はそれをチェックします)。

関連する問題