2011-01-20 17 views
0

私はコンストラクタについて学んでいます。
次のコードをコンパイルしようとすると、「変数の入力と形状が初期化されていません」というエラーが表示されます。変数を内部に持つLuseコンストラクタ

誰も私にそれを解決する方法と方法を教えてもらえますか?

public class Try { 

    public static void main(String[] args) 
    { 
     String input;//user key in the height and width 
     int shape;//triangle or square 

     Count gen = new Count(input , shape);//is this the right way to code? 
     gen.solve(); 
    } 
} 

public class Count { 

    public Count(String inp, int shp) { 

     String input_value = inp; 
     shape_type = shp; 
    } 

    public void solve() { 

     if shape_type==3{ 
      //count the triangle 
     } 
     else if shape_type==4{ 
      //count the square 
     } 
    } 
} 
+0

変数を初期化する必要があります。それは重要ではありませんが、入力の場合はオブジェクトであり、そうでなければ初期化する必要があります。それ以外の場合はプログラムがクラッシュします。あなたは少なくともinput = nullを行うべきですが、その文字列からinput = ""を行う必要があります。または入力=新しいString();またはテキストを入力します。 –

+0

あなたがする必要があるのは、 'input = null'と' shape = 0'(例えば)です。それはあなたのコードが必然的に機能することを意味しません。 – hisdrewness

答えて

1

あなたはshapeまたはinput値が与えられていない、まだあなたはそれらを使用してみてくださいする前に。どちらかあなたは

String input = "test"; 
int shape = 3; 

のように、今の彼らにダミーの値を与えるか、または、ユーザからの文字列と整数を取得することができます。その場合は、Scannerの使い方を見てみてください。

で、値なしで入力して形状を残すことによって:

String input; 
int shape; 

彼らは初期化されていないなので、Javaはその値が実際にあるか知っていません。

1

私はこれが何らかの宿題だと考えます。私はあなたのコードを改造し修正する自由を取った。

使用する変数を初期化する必要があります。唯一の例外は、クラスメンバを使用しているときです(クラスメンバはデフォルト値に自動的に初期化されます)。以下を参照して、Countクラスのメンバーが明示的に初期化されていないことを確認してください。

これはいくつかの動作コードです。また、私は解決方法を少し変更することに注意してください(ifブロックは式の周りに()があったはずですが、通常は以下のようにswitchブロックを使用すると良いでしょう。 solve()メソッドを呼び出すときにそれらを使用することができるようにするために、構築時に提供される値を覚えておくこと。

public class Try { 

    public static void main(String[] args) { 
     String input = null; //user key in the height and width 
     int shape = 0; //triangle or square 

     Count gen = new Count(input, shape);//is this the right way to code? 
     gen.solve(); 
    } 

} 

class Count { 

    String input_value; 
    int shape_type; 

    public Count(String inp, int shp) { 
     this.input_value = inp; 
     this.shape_type = shp; 
    } 

    public void solve() { 
     switch (this.shape_type) { 
      case 3: 
       // count the triangle 
       break; 
      case 4: 
       // count the square 
       break; 
     } 
    } 
} 

コードの適切な形式は、通常:)役立ちます。

関連する問題