Java 数学值计算不正确

Java 数学值计算不正确,java,math,system.out,Java,Math,System.out,由于某些原因,我得到的数学值与我应该得到的不同。我做错了什么 代码: 输出: Please enter employee's name: John Please enter The Dragon's hourly wage: 22.50 Please enter how many hours The Dragon worked: 48.5 John's Wages Regular Pay: $ 1082.75 Overtime Pay: $ 286.88 Total Pay: $

由于某些原因,我得到的数学值与我应该得到的不同。我做错了什么

代码:

输出:

Please enter employee's name: John
Please enter The Dragon's hourly wage: 22.50
Please enter how many hours The Dragon worked: 48.5

John's Wages
Regular Pay: $    1082.75
Overtime Pay: $    286.88
Total Pay: $    1378.13

运算顺序,就像你在基础数学中学到的一样。你在算计

(hourlyWage * hoursWorked) - overtimeHours
相反,你想要

hourlyWage * (hoursWorked - overtimeHours)
此外,您不应重新计算您的
总数
;相反,只需添加常规和加班

最后,正如@CodeMonkey所指出的,您无条件地假设此人正在加班。以下是我的建议:

if(hoursWorked > 40) {
    regularHours = 40;
    overtimeHours = regularHours - 40;
} else {
    regularHours = hoursWorked;
    overtimeHours = 0;
}

我应该得到固定工资:900.00,加班页:286.88,总工资:1186.88。我的超时值正确,但其他值不正确。变量是否为int?始终使用括号。它让编写和阅读代码变得如此之多easier@RyanS请注意,据我所知,在美国,调用
()
括号通常是一种习惯;“方括号”通常指方括号
[]
。您的第一个错误是将浮点值用于货币值,这迟早会造成麻烦。另外,正如其他人所指出的,你的计算中缺少了括号。此外,别忘了考虑到,如果你的工作时间少于40小时,那么你最终会得到负加班和负收入!:-)对我想是的。如果超时时间小于或等于0,我将输入System.out以不显示它。@您的计算仍然是错误的;你需要以我所展示的方式来解释加班/非加班。在我回来查看这篇文章之前,我就知道了。我同意。非常感谢。
if(hoursWorked > 40) {
    regularHours = 40;
    overtimeHours = regularHours - 40;
} else {
    regularHours = hoursWorked;
    overtimeHours = 0;
}