塞特斯& Getters返回0值

时间:2015-04-10 19:58:44

标签: java constructor super

由于某些原因,当我输入RTH和CTH的值时,我收到0.0值。我在换挡吸气器上遇到了类似的问题,但我设法解决了这个问题。不幸的是,试图对问题进行逆向工程并没有帮助。我已经为我的班级和我的司机提供了代码,尽管我几乎确信这个问题在课堂上的某个地方。不过,任何人都可以快速浏览一下RTH / CTH setter / getters,看看我在设置或调用它时遇到了什么错误。

public class TeamLeader extends ProductionWorker
{
    //private variables

    private double RTH;
    private double CTH;
    private double payRate;
    private double monthlyBonus;

    //constructor
    public TeamLeader(String name, String number, String hd, int shift, 
            double rate, double monthlyBonus, double RTH, double CTH)
    {

    super(name, number, hd, shift, rate);
        this.monthlyBonus = monthlyBonus;
    }


    public void setmonthlyBonus(double monthlyBonus)
    {
        this.monthlyBonus = monthlyBonus;
    }

    public void setpayRate(double payRate)
    {
        this.payRate = payRate;
    }

    public void setRTH(double r)
    {
        RTH = r;
    }

    public void setCTH(double c)
    {
        CTH = c;
    }
    //Getters

    public double getmonthlyBonus()
    {
        return monthlyBonus;
    }

    public double getpayRate()
    {
        return payRate;
    }

    public double getRTH()
    {
        return RTH;
    }

    public double getCTH()
    {
        return CTH;
    }
}

驱动程序

   public class WorkDriver {

       public static void main(String[] args) {
           String name;
           String number;
           String hireDate;
           int shift;
           double payRate;
           double monthlyBonus;
           double RTH;
           double CTH;

           name = JOptionPane.showInputDialog("Enter your name");
           number = JOptionPane.showInputDialog
                            ("Enter your number (Format: XXX-L)");
           hireDate = JOptionPane.showInputDialog("Enter your hire date");
           shift = Integer.parseInt(JOptionPane.showInputDialog
                            ("Please enter the work shift for the employee:\n"
                            + "\tEnter 1 for the day shift"
                            + "\n\tEnter 2 for the night shift"));
           payRate = Double.parseDouble(JOptionPane.showInputDialog
                            ("Enter your pay rate"));
           monthlyBonus = Double.parseDouble(JOptionPane.showInputDialog
                            ("Enter your monthly bonus"));
           RTH = Double.parseDouble(JOptionPane.showInputDialog
                            ("Enter your required traing hours"));
           CTH = Double.parseDouble(JOptionPane.showInputDialog
                            ("Enter your training hours attended"));

           //Production worker object
           TeamLeader driver = new TeamLeader(name, number,
                   hireDate, shift, payRate, monthlyBonus, RTH, CTH);

           JOptionPane.showMessageDialog(null,
               "----------- Employe Info ----------------"
                   + "\nName: " + driver.getName() 
                   + "\nEmployee Number: " + driver.getNumber() 
                   + "\nHire Date: " + driver.getHireDate() 
                   + "\nPay Rate: " + driver.getPayRate() 
                   + "\nShift: " + driver.getShift() 
                   + "\nMonthly Bonus: " + driver.getmonthlyBonus() 
                   + "\nRequired Training Hours: " + driver.getRTH() 
                   + "\nTraining Hours Attended: " + driver.getCTH());
           System.exit(0);
       }
   }

3 个答案:

答案 0 :(得分:3)

您永远不会致电CTHRTH的制定者。您将它们的值传递给构造函数但不使用它们。

添加到CTHRTH的构造函数设置:

public TeamLeader(String name, String number, String hd, int shift, 
        double rate, double monthlyBonus, double RTH, double CTH)
{
    super(name, number, hd, shift, rate);
    this.monthlyBonus = monthlyBonus;
    this.RTH = RTH;
    this.CTH = CTH;
}

答案 1 :(得分:0)

您正在调用父(超级)构造函数,但它不接受RTH或CTH,并且您从未在TeamLeader对象上设置RTH和CTH。

答案 2 :(得分:0)

      public TeamLeader(String name, String number, String hd, int shift, 
                double rate, double monthlyBonus, double RTH, double CTH)
        {

        super(name, number, hd, shift, rate);
            this.monthlyBonus = monthlyBonus;
            this.RTH = RTH;
            this.CTH = CTH;
        }

您没有将传递的RTH设置为实例的RTH。请参阅上面的代码以获取修复