2010-10-04 8 views
0

Comme la plupart des nouveaux programmeurs, j'ai un problème petit mais significatif que je n'arrive pas à comprendre. Mon programme ne tirera pas mon constructeur. J'ai essayé pas mal de façons différentes et je n'arrive pas à le comprendre. Toute aide serait grandement appréciée.Java ne peut pas trouver le constructeur

 
Error 
EmployeeTest.java:13: cannot find symbol 
symbol : constructor Employee() 
location: class Employee 
    Employee x = new Employee(); 
       ^
EmployeeTest.java:14: cannot find symbol 
symbol : constructor Employee() 
location: class Employee 
    Employee y = new Employee(); 
public class Employee 
{ 
private double salaryValue; // variable that stores monthlySalary 
private String firstName; // instance variable that stores first name 
private String lastName; // variable that stores last name 

public Employee(String firstNameParameter , String lastNameParameter , double   salaryValueParameter) 
{ 

    if (salaryValueParameter < 0.0) // validate monthlySalary > 0.0 
    salaryValue = 0.0; // if not salary is intitalized to default 

    else 

     firstName = firstNameParameter; 
     lastName = lastNameParameter; 
     salaryValue = salaryValueParameter; 
} 

public class EmployeeTest 
{ 
public static void main(String[] args) 
{ 
String temp; 
Double temp2; 
Double temp3; 

Employee x = new Employee(); 
Employee y = new Employee(); 
+1

Par ailleurs, 'double' est souvent * pas * le meilleur type de données pour modéliser les quantités de devises en raison des erreurs d'arrondi qui peuvent s'accumuler au fil du temps. –

Répondre

3

Vous appelez un constructeur sans aucun paramètre:

new Employee() 

Cela provoque Java à rechercher ce constructeur par défaut dans votre classe:

public Employee() {} 

qui il peut Ne pas trouver parce que vous avez un constructeur personnalisé avec des paramètres, d'où l'erreur. Votre Employee classe n'a que ce constructeur:

public Employee(String, String, double) {} 

vous devez soit passer des paramètres aux constructeurs dans vos déclarations new, ou déclarer sans paramètre constructeur par défaut explicitement et mettre en œuvre (comme une surcharge de votre autre constructeur, peut-être transmettre des valeurs par défaut ou quelque chose comme ça).

0

Vous devez ajouter un constructeur public par défaut:

public void Employee(); 
10

Parce que vous avez ajouté un constructeur qui prend 3 arguments, la classe Employee ne dispose plus d'un constructeur par défaut - celui qui ne prend aucun argument. Donc, vous ne pouvez pas le faire:

Employee x = new Employee(); 

et vous devez inclure 3 arguments:

Employee x = new Employee("firstname", "lastname", 123.45); 

Si vous voulez instancier un Employee sans fournir aucun paramètre, vous devez ajouter un constructeur sans argument:

public Employee() { 
} 

Vous pouvez en savoir plus sur les constructeurs par défaut dans section 8.8.9 du Java Language Specification.

0

Vous devez définir votre constructeur par défaut. Lorsque vous implémentez un personnalisé, la valeur par défaut est perdu

public class Employee{ 
    public Employee(){} 
... 
} 

Here est un court article sur les constructeurs

0

Votre constructeur définit chaîne firstNameParameter, String lastNameParameter, double salaryValueParameter

en tant que paramètres. Lorsque vous appelez Employé x = new Employee(); vous appelez un constructeur inexistant. Essayez plutôt ce qui suit:

Employee x = new Employee('David', 'Jones', 50000); 
2

Par défaut, une classe a un constructeur sans argument. C'est à dire.

public Employee() 

Si plus tard, vous ajoutez votre propre constructeur, par exemple.

public Employee(String name) 

Ensuite, ceux énumérés sont les seuls que vous pouvez utiliser.

Si vous voulez toujours appeler la valeur par défaut un, ajoutez-le.

public Employee() 
0

Vous essayez de créer une nouvelle classe avec un constructeur vide, mais le seul constructeur que vous avez déclaré est un exigeant des paramètres . Vous devriez probablement essayer quelque chose comme:

Employee x = new Employee("Bob", "Jones", "100.0"); 

Ou, déclarez un constructeur par défaut:

public Employee() { 
    //do cool stuff here 
} 

espoir qui aide.

0

Vous fournissez uniquement un constructeur avec trois arguments, mais vous essayez d'appeler un constructeur sans arguments. Un tel constructeur est inclus automatiquement par le compilateur mais seulement si votre classe n'a pas d'autres constructeurs.

Alors vous avez deux options:

  • un autre constructeur sans Inclure arguments
  • appeler le constructeur avec le bon nombre et les types d'arguments
Questions connexes