一旦员工工作超过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));
}
}
答案 0 :(得分:0)
你的加班时间等于1.5。然后你要检查是否1.5>工作时间。除非工作时间少于1.5小时,否则不会显示。
我认为你希望加班时间等于40,如果它不到小时工作
答案 1 :(得分:0)
if(hoursWorked >40) payroll =(overTime * hourlyRate*(hoursWorked-40))+hourlyRate*40;
这就是你想要的吗?
答案 2 :(得分:0)
两件事......
正如评论中所述,您在设置overTime
后将40
与overTime = 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
行,以避免进一步混淆。