Java找不到构造函数
像大多数新程序员一样,我也有一个小问题,但我无法解决。 我的程序不会拉我的构造函数。我试过很多不同的方法,但似乎都不明白。任何帮助都将不胜感激 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(); 错误 java:13:找不到符号 符号:构造函数雇员() 地点:班级员工 员工x=新员工(); ^ java:14:找不到符号 符号:构造函数雇员() 地点:班级员工 员工y=新员工();Java找不到构造函数,java,Java,像大多数新程序员一样,我也有一个小问题,但我无法解决。 我的程序不会拉我的构造函数。我试过很多不同的方法,但似乎都不明白。任何帮助都将不胜感激 Error EmployeeTest.java:13: cannot find symbol symbol : constructor Employee() location: class Employee Employee x = new Employee(); ^ EmployeeTest.java:14:
公共类员工
{
private double salaryValue;//按月存储的变量
私有字符串firstName;//存储名字的实例变量
私有字符串lastName;//存储姓氏的变量
公共雇员(字符串firstNameParameter、字符串lastNameParameter、双salaryValueParameter)
{
if(salaryValueParameter<0.0)//每月验证薪资>0.0
salaryValue=0.0;//如果不是,则将薪资初始化为默认值
其他的
firstName=firstNameParameter;
lastName=lastName参数;
salaryValue=salaryValueParameter;
}
公营雇员测验
{
公共静态void main(字符串[]args)
{
字符串温度;
双temp2;
双temp3;
员工x=新员工();
员工y=新员工();
您调用的构造函数没有任何参数:
new Employee()
这会导致Java在类中查找此默认构造函数:
public Employee() {}
它找不到,因为您有一个带有参数的自定义构造函数,因此出现了错误。您的Employee
类只有此构造函数:
public Employee(String, String, double) {}
public void Employee();
public Employee() {
}
public Employee() {
//do cool stuff here
}
您应该在
新的语句中将参数传递给构造函数,或者显式声明默认的无参数构造函数并实现它(作为其他构造函数的重载,可能是为了传递默认值或其他内容)。您必须添加默认的公共构造函数:
public Employee(String, String, double) {}
public void Employee();
public Employee() {
}
public Employee() {
//do cool stuff here
}
因为您添加了一个接受3个参数的构造函数,Employee
类不再具有默认构造函数-一个不接受参数的构造函数。因此,您无法执行此操作:
Employee x = new Employee();
您必须包含3个参数:
Employee x = new Employee("firstname", "lastname", 123.45);
如果要实例化员工而不提供任何参数,则必须添加无参数构造函数:
public Employee(String, String, double) {}
public void Employee();
public Employee() {
}
public Employee() {
//do cool stuff here
}
您可以在的中阅读有关默认构造函数的更多信息。您必须定义默认构造函数。当您实现自定义构造函数时,默认构造函数将丢失
public class Employee{
public Employee(){}
...
}
是一篇关于构造函数的短文您的构造函数定义
字符串firstNameParameter、字符串lastNameParameter、双salaryValueParameter
作为参数。当您调用
员工x=新员工();
您正在调用不存在的构造函数。请尝试以下操作:
Employee x = new Employee('David', 'Jones', 50000);
默认情况下,类具有无参数构造函数
public Employee()
如果你以后再去添加你自己的构造器
public Employee( String name )
那么,列出的是您唯一可以使用的
如果仍要调用默认值,请将其添加回
public Employee()
您正在尝试使用空构造函数创建新类,但您声明的唯一构造函数是需要参数的构造函数。您可能应该尝试以下操作:
Employee x = new Employee("Bob", "Jones", "100.0");
或者,声明默认构造函数:
public Employee(String, String, double) {}
public void Employee();
public Employee() {
}
public Employee() {
//do cool stuff here
}
希望对您有所帮助。您只提供了一个有三个参数的构造函数,但尝试调用一个没有参数的构造函数。编译器会自动包含这样的构造函数,但前提是您的类没有其他构造函数
所以你有两个选择:
- 包含另一个不带参数的构造函数
- 使用正确数量和类型的参数调用构造函数
顺便说一句,double
通常不是建模货币数量的最佳数据类型,因为舍入误差会随时间累积。