2012-01-06 2 views
0

私は4つのコンストラクタを持つクラスを持っています。メインクラスをコンパイルしようとすると、このコードの最後の行に "シンボルを見つけることができません"というエラーが表示されます。しかし、このクラスのすべてのコンストラクタはvalueを定義しているので、何が起こっているのか分かりません。私は何が欠けていますか?このクラスをコンパイルすると「シンボルが見つかりません」と表示されるのはなぜですか?

import java.math.BigDecimal; 

public class PowerTwo { 

    public PowerTwo(int n){ 
     final BigDecimal value = new BigDecimal(n); 
    } 

    public PowerTwo(long n){ 
     final BigDecimal value = new BigDecimal(n); 
    } 

    public PowerTwo(BigDecimal n){ 
     final BigDecimal value = n; 
    } 

    public PowerTwo(String n){ 
     final BigDecimal value = new BigDecimal(n); 
    } 

    public int power(){ 
     BigDecimal two = new BigDecimal("2"); 
     BigDecimal remainder = value; 

答えて

4

あなたはフィールドではなく、ローカル変数にする必要があります。

public class PowerTwo { 

private final BigDecimal value; 

それはコンストラクタの外でなければなりません。

+0

ありがとうございます。私はコンストラクタの外に追加しようとしましたが、コンストラクタ内の宣言を削除する必要があるという認識はありませんでした。 –

1

最後のコンストラクタのスコープにない各コンストラクタにローカル変数を定義しています。代わりにクラスのプロパティにします。