有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java中的eclipse工资单生成0

问题是:

设计一个Payroll类,该类包含员工姓名、ID号、小时工资率和工作小时数字段。编写适当的访问器和mutator方法,并创建一个接受员工姓名和ID号作为参数的构造函数。该类还应该有一个返回员工总工资的方法,该工资是按工作小时数乘以小时工资率计算的。编写一个程序,通过创建Payroll对象M,然后要求用户输入员工的数据来演示该类。该程序应显示所赚取的工资总额
这是我为这门课准备的东西

import java.util.Scanner;   //Needed for scanner class.
public class Payroll
{
    private String EmployeeName;
    private int IDnumber;
    private double HourlyPayRate;
    private double HoursWorked;
    private double GrossPay;

    /**
        Constructor
        @param Name The name to store in EmployeeName.
        @param ID The ID to store in Employee ID number.
    */
    public Payroll(String Name, int ID)
    {
        EmployeeName = Name;
        IDnumber = ID;
    }
    public String getEmployeeName()
    {
        return EmployeeName;
    }
    public int getIDnumber()
    {
        return IDnumber;
    }
    public void setHourlyPayRate(double HourlyRate)
    {
        HourlyPayRate = HourlyRate;
    }
    public double getHourlyPayRate()
    {
        return HourlyPayRate;
    }
    public void setHoursWorked(double hoursWorked)
    {
        HoursWorked = hoursWorked;
    }
    public double getHoursWorked()
    {
        return HoursWorked;
    }
    public double getGrossPay()
    {
        return HourlyPayRate * HoursWorked;
    }
}

构造器

import java.util.Scanner;   //Needed for Scanner class.

public class PayrollTest
{
    public static void main(String[] args)
    {
        String EmployeeName;
        int IDnumber;
        double HoursWorked;
        double HourlyPayRate;
        double GrossPay;

        //Create a Scanner object for keyboard input.
        Scanner keyboard = new Scanner(System.in);

        //Get the employee's name.
        System.out.println("Enter an employee's name: ");
        EmployeeName = keyboard.nextLine();

        //Get the employee's ID.
        System.out.println("Enter the employee's ID " );
        IDnumber = keyboard.nextInt();

        //Get the number of hours worked by the employee.
        System.out.println("Enter the amount of hours worked by this employee: ");
        HoursWorked = keyboard.nextDouble();

        //Get the hourly pay rate of the employee.
        System.out.println("Enter the hourly pay rate for this employee: ");
        HourlyPayRate = keyboard.nextDouble();

        //Create a payroll object, passing EmployeeName and IDnumber
        // as arguments to the constructor.
        Payroll pay = new Payroll(EmployeeName, IDnumber);

        //Get the Gross Pay of the employee.
        System.out.println("The gross pay of " + EmployeeName + " is: " + pay.getGrossPay());
    }
}

当我编译它时,我没有得到任何错误,但我一直在最后得到grosspay=0.0的结果


共 (1) 个答案

  1. # 1 楼答案

    创建一个新的Payroll对象

    Payroll pay = new Payroll(EmployeeName, IDnumber);
    

    并在print语句中对其调用getGrossPay()方法

    pay.getGrossPay()
    

    该方法的作用如下:

    return HourlyPayRate * HoursWorked;
    

    由于您从未设置HourlyPayRateHoursWorked,因此该方法当然将返回0

    要解决此问题,请将这些值设置为从用户处读取的变量:

    pay.setHoursWorked(HoursWorked);
    pay.setHourlyPayRate(HourlyPayRate);
    

    您可以在创建Payroll对象之后、调用getGrossPay()方法之前添加这些行。因此,代码的最后四行现在应该如下所示:

    Payroll pay = new Payroll(EmployeeName, IDnumber);
    
    //set pay rate and hours worked
    pay.setHoursWorked(HoursWorked);
    pay.setHourlyPayRate(HourlyPayRate);
    
    //Get the Gross Pay of the employee.
    System.out.println("The gross pay of " + EmployeeName + " is: " + pay.getGrossPay());