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.
Ajoutez ceci à votre classe:
public WeightIn(){
}
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
Vous n'avez pas le constructeur WeightIn () .Créez-le ou donnez des paramètres dans la méthode principale au constructeur.
WeightIn weight1 = new WeightIn();
Le constructeur par défaut n'est pas défini. Veuillez le définir comme ceci: -
public weightIn()
{
}
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.
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();