9
votes

Java Erreur: Le constructeur est indéfini

En Java, Pourquoi ai-je cette erreur:

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


3 commentaires

Le compilateur est juste. Le constructeur Weightin () est pas défini.


pouvez-vous corriger le code, puis passé une copie afin que je puisse le comprendre s'il vous plaît


Le script ne fonctionne toujours pas


8 Réponses :


20
votes

Ajouter à votre classe:

public WeightIn(){
}
  • S'il vous plaît comprendre que le constructeur par défaut sans argument est fourni uniquement si aucun autre écrit constructeur li>
  • Si vous écrivez tout constructeur, alors compilateur ne fait pas défaut fourni constructeur sans arg. Vous devez spécifier un. Li> Ul> p>


0 commentaires

1
votes

Vous n'avez pas le constructeur Weightin () .Create ou donner des paramètres dans la méthode principale pour le constructeur.


0 commentaires

1
votes
public weightIn()
    {
    }

0 commentaires

5
votes

Dans ce que vous ne pouvez pas faire Weightin weight1 = new Weightin (); code> depuis constructeur par défaut n'est pas défini.

Vous pouvez ajouter p>

public WeightIn(){
}


0 commentaires

2
votes

Le compilateur est rencontre d'un appel à un " Weightin () code>" aucun constructeur argument, sur cette ligne:

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


3 commentaires

1 C'est la seule réponse qui efface réellement la cause de l'erreur: ce n'est pas dans la définition du constructeur, il est dans l'appel d'un constructeur qui ne correspond pas à des signatures de constructeur définies. Cette idée détourne l'attention de la question de « Je ne vous écris pas mon constructeur de la classe correctement » à « je ne l'appelle pas mon constructeur de la classe correctement », qui fait une différence à un n00b (comme moi) de comprendre la source du problème . Toutes les autres réponses semblent impliquer que vous devez écrire un constructeur avant parameterless surcharger, ce qui est le cas.


@TomAuger: vous êtes tout à fait correct. il n'y a pas obligation de fournir un constructeur d'argument non. nous pouvons faire cela, mais ce ne est pas nécessaire. (Vous avez raison que certaines des réponses utilisent trompeusement l'expression « vous devez » et de fournir une seule solution, comme si c'est la seule solution. (Chaque fois que je lis une réponse qui dit: « vous devez » Je me interroge toujours, demander est-ce vraiment vrai? t-on vraiment besoin de , ou y at-il d'autres, peut-être mieux, des solutions de rechange?


@TomAuger: « Pourquoi ai-je cette erreur » vous êtes aussi exact que la plupart des réponses ici sur la question sauter qui a été posée et tenter de répondre à d'autres questions.



0
votes

Tout d'abord, vous devez savoir qu'un fichier .java peut avoir une seule classe publique.

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

au lieu de xxx


0 commentaires

1
votes
 WeightIn weight = new WeightIn();

0 commentaires

0
votes

Cela m'a fallu un moment, mais je pense que j'ai finalement compris que ce programme fonctionne. J'ai séparé les classes dans différents fichiers et renommé la classe de poids pour enregistrer de manière à ce qu'il soit plus évident au lieu de tout être nommé une variation de poids. J'ai également ajouté une classe de sortie pour que le code principal soit propre et minimal possible. J'espère que cela ressemble à ce que vous espériez faire.
code d'origine: "constructeur" fort> xxx pré>


Projet: PEAUFOIP strong>
PACKAGE: PEAUFOIREINApp STRUT>
classe: fiche.java strong> p> xxx pré>


Projet: PEAFFORMApp strong>
PACKAGE: PEAUFOIREINApp STRUT>
classe: sortie.java strong>
Cette classe génère les valeurs définies sur une table de la console. Cela peut être modifié manuellement pour ajouter plus de données. Vous pouvez également envisager de suivre la date de l'enregistrement et de l'ajouter à cette sortie. Vous auriez besoin d'ajouter les variables, les getters et les configurateurs requis dans la classe d'enregistrement pour cette fonctionnalité. P>

package weightInApp;
import weightInApp.Record; //imports methods and variables from the other classes
import weightInApp.Output;
public class  Main {

    public static void main (String [] args){  
        Record weightIn1 = new Record(0,0);  
//previous line of code creates a new Record object named weightIn1 
//previous line of code also sets both the values of weight and height to 0.
        weightIn1.setWeight(3.65); //sets weight for weightIn1
        weightIn1.setHeight(1.70);//sets Height for WeightIn1
        Record weightIn2 = new Record(0, 0); 
        weightIn2.setWeight(3.00);
        weightIn2.setHeight(1.75);
 //previous 3 lines are the same as above for weightIn1 
//except this is for a second object named weightIn2
        Output.output(weightIn1, weightIn2); //calls runs passes values to output method
}
}


0 commentaires