11

Java で、なぜこのエラーが発生するのですか:

Error: The constructor WeightIn() is undefined

Java コード:

public class WeightIn{
  private double weight;
  private double height;

  public WeightIn (double weightIn, double heightIn){
    weight = weightIn;
    height = heightIn;
  }
  public void setWeight(double weightIn){
    weight = weightIn;
  }
  public void setHeight(double heightIn){
    height = heightIn;
  }
}

public class WeightInApp{
  public static void main (String [] args){
    WeightIn weight1 = new WeightIn();         //Error happens here.
    weight1.setWeight(3.65);
    weight2.setHeight(1.7);
  }
}

コンストラクターを定義しました。

4

8 に答える 8

21

これをクラスに追加します。

public WeightIn(){
}
  • デフォルトの引数のないコンストラクターは、他のコンストラクターが記述されていない場合にのみ提供されることを理解してください。
  • コンストラクターを作成すると、コンパイラーはデフォルトの引数なしコンストラクターを提供しません。いずれかを指定する必要があります。
于 2013-08-10T05:59:07.160 に答える
6

WeightIn weight1 = new WeightIn();デフォルトのコンストラクターが定義されていないため、現在の実装ではできません。

だからあなたは追加することができます

public WeightIn(){
}

または、これを行うことができます

WeightIn weight1 = new WeightIn(3.65,1.7) // constructor accept two double values

于 2013-08-10T06:03:59.620 に答える
3

コンパイラは、WeightIn()次の行で引数なしコンストラクタ " " の呼び出しを検出しています:

WeightIn weight1 = new WeightIn();         //Error happens here.

コンパイラは、クラス定義で一致するコンストラクターを探していますが、それが見つかりません。それがエラーです。(コンストラクターが定義されています: " WeightIn(double,double)" ですが、これは 2 つの引数を取り、一致しません。)

これを修正するいくつかの方法。

最も簡単な方法は、メイン メソッドのコードを変更して 2 つの引数を渡すことです。

WeightIn weight1 = new WeightIn( 3.65, 1.7); 
//weight1.setWeight(3.65);
//weight2.setHeight(1.7);

setWeightメソッドとメソッドの呼び出しsetHeightは冗長です。これは、コンストラクター メソッドによってメンバーに値が既に割り当てられているためです。

于 2013-08-17T01:38:45.787 に答える
1

コンストラクター WeightIn() がありません。それを作成するか、メイン メソッドでパラメーターをコンストラクターに渡します。

于 2013-08-10T06:00:01.867 に答える
1
WeightIn weight1 = new WeightIn();  

デフォルトのコンストラクターは定義されていません。次のように定義してください:-

public weightIn()
    {
    }
于 2013-08-10T06:00:02.157 に答える
0

まず、1 つの .java ファイルが持つことができる public クラスは 1 つだけであることを知っておく必要があります。

パラメータ化されたコンストラクターを記述し、デフォルトのコンストラクターにアクセスしているため、エラーが発生しています。このエラーを修正するには、次のように記述します。

WeightIn weight1 = new WeightIn(5.2, 52.2); 

それ以外の

WeightIn weight1 = new WeightIn();
于 2014-02-19T07:02:33.527 に答える