Setters 和 Getters 返回 0 值

Setters & Getters returning 0 value

出于某种原因,当我输入 RTH 和 CTH 的值时,我收到 0.0 值。我的 shift getter 也有类似的问题,但我设法解决了这个问题。不幸的是,试图对问题进行逆向工程并没有帮助。我已经为我的 class 和我的 driver 提供了代码,尽管我几乎确信问题出在 class 的某个地方。尽管如此,任何人都可以快速浏览一下 RTH / CTH 设置器/获取器,看看我在设置或调用它们时做错了什么。

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;
    }
}

Driver

   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);
       }
   }

您永远不会调用 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;
}

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

      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。请参阅上面的代码以进行修复