怎么才能让这个加班时间正确显示

时间:2015-10-30 19:10:46

标签: java

一旦员工工作超过40小时,我就会试图获得加班费。其他一切在我的工资单程序中正常工作

这是显示的内容:

  

输入员工姓名:tom

     

输入每小时费率:10

     

输入工作小时数:42

     汤姆的支票将等于

     

$ 420.00

超过40小时的工作时间应该是加班费率

import java.io.*;
import java.text.DecimalFormat;
import java.time.*;

public class payroll {
    public static void main(String[] args) throws IOException {

        String employeeName, tempVariable;
        double hourlyRate, hoursWorked, payroll, overTime = 1.5;
        BufferedReader myIn = new BufferedReader(new InputStreamReader(System.in));

        System.out.print("Enter the Employee Name:");
        employeeName = myIn.readLine();

        System.out.print("Enter the hourly pay rate: ");
        tempVariable = myIn.readLine();
        hourlyRate = Double.parseDouble(tempVariable);

        System.out.print("Enter the number of hours worked:");
        tempVariable = myIn.readLine();
        hoursWorked = Double.parseDouble(tempVariable);

        payroll = (double) hourlyRate * hoursWorked;
        if (hoursWorked > 40) payroll = (overTime * hourlyRate);
        DecimalFormat money = new DecimalFormat("$0.00");

        System.out.println(employeeName + "'s check will amount to ");
        System.out.println(money.format(payroll));

    }
}

3 个答案:

答案 0 :(得分:0)

你的加班时间等于1.5。然后你要检查是否1.5>工作时间。除非工作时间少于1.5小时,否则不会显示。

我认为你希望加班时间等于40,如果它不到小时工作

答案 1 :(得分:0)

if(hoursWorked >40) payroll =(overTime * hourlyRate*(hoursWorked-40))+hourlyRate*40;

这就是你想要的吗?

答案 2 :(得分:0)

两件事......

正如评论中所述,您在设置overTime后将40overTime = 1.5进行了比较。因此,它永远不会成真。 我猜你想要更多的东西

if (hoursWorked > 40) ...

其次,你的计算似乎没有了。 如果您只修复了测试,那么您最终会得到payroll = overTime * hourlyRate,而不会考虑工作小时数。 我猜你想要按照1.5次小时费率支付加班费,在这种情况下,你需要按小时费率加上加班费支付40小时( ie 工作小时数减去40小时的1.5倍小时费率:

if (hoursWorked > 40) {
  payroll = ( 40 * hourlyRate ) + ( ( hoursWorked - 40 ) * overTime * hourlyRate )
}

外括号只是为了清晰起见,运算符优先级使它们不必要。

此外,您应该使用40的常量,并且您可能希望将overTime变量重命名为overTimeMultiplier行,以避免进一步混淆。