Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.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_Constructor_Undefined - Fatal编程技术网

Java 构造函数是未定义的问题

Java 构造函数是未定义的问题,java,constructor,undefined,Java,Constructor,Undefined,我目前正在编写一个程序,它应该读取一个文本文件,创建一个不同类型员工的数组(每个员工都有自己的子类),然后以不同的格式打印信息。我想我已经完成了大部分工作,但每当我尝试实际创建对象时(至少我认为是这样的?),就会出现“构造函数未定义”错误。这发生在所有7个对象上。我将在这里发布一个(及其子类),这样你们就不会被信息过载,希望我能从中找出其余的 谢谢你能提供的任何帮助 我正在读取和创建对象的驱动程序类(不包括下面的其余代码) “Emp[0]”行出现错误 受薪雇员子类 public clas

我目前正在编写一个程序,它应该读取一个文本文件,创建一个不同类型员工的数组(每个员工都有自己的子类),然后以不同的格式打印信息。我想我已经完成了大部分工作,但每当我尝试实际创建对象时(至少我认为是这样的?),就会出现“构造函数未定义”错误。这发生在所有7个对象上。我将在这里发布一个(及其子类),这样你们就不会被信息过载,希望我能从中找出其余的

谢谢你能提供的任何帮助

我正在读取和创建对象的驱动程序类(不包括下面的其余代码) “Emp[0]”行出现错误

受薪雇员子类

    public class SalariedEmployee extends Employee
{
    private double weeklySalary;

    // four-argument constructor
    public SalariedEmployee( String first, String last, String ssn, Date DayOfBirth, String ID,
      double salary )
   {
      super( first, last, ssn, DayOfBirth, ID); // pass to Employee constructor

      setWeeklySalary( salary ); // validate and store salary
   } // end four-argument SalariedEmployee constructor

   // set salary
   public void setWeeklySalary( double salary )
   {
      double baseSalary;
    if ( salary >= 0.0 )
         baseSalary = salary;
      else
         throw new IllegalArgumentException(
            "Weekly salary must be >= 0.0" );
   } // end method setWeeklySalary

   // return salary
   public double getWeeklySalary()
   {
      return weeklySalary;
   } // end method getWeeklySalary

   // calculate earnings; override abstract method earnings in Employee
   @Override                                                           
   public double earnings()                                            
   {                                                                   
      return getWeeklySalary();                                        
   } // end method earnings                                            

   // return String representation of SalariedEmployee object   
   @Override                                                    
   public String toString()                                     
   {                                                            
      return String.format( "salaried employee: %s\n%s: $%,.2f",
         super.toString(), "weekly salary", getWeeklySalary() );
   } // end method toString                                     
} // end class SalariedEmployee

再次感谢您提供的帮助

是的-看看你的构造函数,包括明显不准确的注释:

// four-argument constructor
public SalariedEmployee(String first, String last, String ssn, Date DayOfBirth,
                        String ID, double salary)
注意有6个参数。下面是你如何称呼它的:

Emp[0] = new SalariedEmployee(first, last, ssn, DayOfBirth, ID);
您正在传递5个参数。工资怎么了

作为旁注:

  • Java变量通常采用camelCased格式,因此
    dayOfBirth
    id
    而不是
    dayOfBirth
    id
  • 对工资等财务价值使用
    double
    是个坏主意。使用
    BigDecimal
    或保留整数分。(这是假设你甚至需要它到美分…)

对于不准确的评论,我深表歉意,原来是4条,我在没有更改评论的情况下将其更改为6条。我真不敢相信我没听懂遗漏的论点。很抱歉浪费您的时间,但非常感谢您的帮助@user2774647:我会完全删除注释-它不会提供任何额外的见解,这样的注释很容易过时。我计划这样做,原始代码实际上来自我几周前完成的一项书籍作业,需要将所有注释作为作业的一部分。现在我只是在玩弄旧代码,试图用它来完成新的事情,只是没有弄乱旧的注释。
Emp[0] = new SalariedEmployee(first, last, ssn, DayOfBirth, ID);