Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java找不到构造函数_Java - Fatal编程技术网

Java找不到构造函数

Java找不到构造函数,java,Java,像大多数新程序员一样,我也有一个小问题,但我无法解决。 我的程序不会拉我的构造函数。我试过很多不同的方法,但似乎都不明白。任何帮助都将不胜感激 Error EmployeeTest.java:13: cannot find symbol symbol : constructor Employee() location: class Employee Employee x = new Employee(); ^ EmployeeTest.java:14:

像大多数新程序员一样,我也有一个小问题,但我无法解决。 我的程序不会拉我的构造函数。我试过很多不同的方法,但似乎都不明白。任何帮助都将不胜感激

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=新员工();
公共类员工
{
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
通常不是建模货币数量的最佳数据类型,因为舍入误差会随时间累积。