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);
}
}
8 Réponses :
Ajouter à votre classe:
public WeightIn(){
}
Vous n'avez pas le constructeur Weightin () .Create ou donner des paramètres dans la méthode principale pour le constructeur. P>
public weightIn()
{
}
Dans ce que vous ne pouvez pas faire Vous pouvez ajouter p> Weightin weight1 = new Weightin (); code> depuis constructeur par défaut n'est pas défini. public WeightIn(){
}
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);
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 i> » 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 i> » Je me interroge toujours, demander est-ce vraiment vrai? t-on vraiment besoin de i>, ou y at-il d'autres, peut-être mieux, des solutions de rechange?
@TomAuger: « Pourquoi ai-je cette erreur i> » 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.
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: p> au lieu de p>
WeightIn weight = new WeightIn();
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>
Projet: PEAUFOIP strong>
classe: fiche.java strong> p>
Projet: PEAFFORMApp strong>
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
}
}
Le compilateur est juste. Le constructeur
Weightin () code> est pas b> 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