web-dev-qa-db-fra.com

Erreur Java: le constructeur n'est pas défini

En Java, pourquoi ai-je cette erreur:

Error: The constructor WeightIn() is undefined

Code 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);
  }
}

J'ai un constructeur défini. 

6
user2669883

Ajoutez ceci à votre classe:

public WeightIn(){
}
  • Veuillez comprendre que le constructeur par défaut sans argument n'est fourni que si aucun autre constructeur n'est écrit.
  • Si vous écrivez un constructeur, le compilateur ne fournit pas le constructeur sans argument par défaut. Vous devez en spécifier un.
16
Prasad Kharkar

En cela, vous ne pouvez pas faire WeightIn weight1 = new WeightIn(); car le constructeur par défaut n'est pas défini.

Donc vous pouvez ajouter

public WeightIn(){
}

Ou tu peux faire ça

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

4

Vous n'avez pas le constructeur WeightIn () .Créez-le ou donnez des paramètres dans la méthode principale au constructeur.

1
ihsan kocak
WeightIn weight1 = new WeightIn();  

Le constructeur par défaut n'est pas défini. Veuillez le définir comme ceci: -

public weightIn()
    {
    }
1
Rahul Tripathi

Le compilateur rencontre un appel au constructeur "WeightIn()" sans argument, sur cette ligne:

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

Le compilateur recherche un constructeur correspondant dans la définition de classe et ne le trouve pas. C'est l'erreur. (Vous avez un constructeur défini: "WeightIn(double,double)" mais qui prend deux arguments et ne correspond pas.)

Plusieurs façons de résoudre ce problème.

Le plus simple est de changer le code dans votre méthode principale pour passer deux arguments. 

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

Les appels aux méthodes setWeight et setHeight sont redondants, car la méthode constructeur attribue déjà des valeurs aux membres.

1
spencer7593

Tout d’abord, vous devez savoir qu’un fichier .Java ne peut avoir qu’une seule classe publique.

Vous obtenez une erreur car vous avez écrit le constructeur paramétré et accédé à un constructeur par défaut. Pour corriger cette erreur, écrivez:

WeightIn weight1 = new WeightIn(5.2, 52.2); 

au lieu de 

WeightIn weight1 = new WeightIn();
0
Prajwal Sharma