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