A folha de pagamentos em java resulta em 0

o problema é:

Criar uma classe de folha de pagamento que tenha campos para o nome de um empregado, número de identificação, taxa de pagamento horária, e número de horas trabalhadas. Escrever os métodos apropriados de accessor e mutador abd um construtor que aceite o nome e o número de identificação do empregado como agrários. A classe também deve ter um método que retorna o salário bruto do empregado, que é calculado como o número de horas trabalhadas multiplicadas pela taxa de salário horário. Escrever um programa que demonstra a classe, criando um objeto de folha de pagamento, em seguida, pedindo ao Usuário para inserir os dados para um empregado. O programa deve exibir o montante do salário bruto ganho.
É o que tenho para a turma.

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

O Construtor

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

Quando o compilo, não recebi nenhum erro, mas continuo a receber o resultado do grosspay = 0.0 no final.

Author: Jessica Lim, 2016-10-05

1 answers

Você cria um novo objecto Payroll

Payroll pay = new Payroll(EmployeeName, IDnumber);

E ligue para o método getGrossPay() na sua declaração de impressão

pay.getGrossPay()

Esse método faz o seguinte:

return HourlyPayRate * HoursWorked;

Uma vez que nunca definiste HourlyPayRate ou HoursWorked, é claro que o método vai devolver 0.

Para corrigir isto, defina esses valores para as variáveis que leu Do Utilizador:

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

Você pode adicionar essas linhas depois de criar o objeto Payroll, mas antes de chamar o método getGrossPay(). Então as últimas quatro linhas de seu código agora deve ser parecido com este:

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());
 0
Author: nhouser9, 2016-10-05 23:22:58