【发布时间】:2015-10-16 06:33:50
【问题描述】:
一旦用户输入超过 60 小时的小时数,我无法在我的 "gross_pay" 方法中计算双倍时间(2.0m * 小时费率)。我已经完成了常规的总工资(小时* 工资率) 小于或等于 40 小时和超过 40 小时但不超过 60 小时的超时时间 (1.5 * 工资率)。
在纸面上,这对我来说是有意义的,但我有点难以将其转换为代码。我已经用 C# 编程了大约 8 周,所以很多东西还不直观。为了这篇文章,我只是将 if (hours > 60) 语句留空......我的代码在那里没有做任何事情。我将不胜感激任何可以指导我解决此问题的帮助。今晚我一直在努力解决这个问题,谢谢你的时间。这是我目前所拥有的:
//method that calculates the gross pay
private decimal gross_pay(ref decimal hours, ref decimal rate)
{
decimal gross_pay = 0m;
if (hours >60)
{
// do something
}
else if (hours >40 && hours <60)
{
//calculates the over time pay.
decimal over_time = hours - 40;
gross_pay = rate * 40 + (1.5m * rate) * over_time;
}
else if (hours <=40)
{
gross_pay = hours * rate;
}
return gross_pay;
}
【问题讨论】:
-
我当然不想为你工作 60 小时 ;-) 确保
<60变为<=60,这样就不会下降到 0。理想情况下添加一个 @ 987654324@你忘记的情况下断言或例外! -
问问你自己:当你工作 61 小时时,你得到了多少 - 它与 60 小时相同,还是按正常费率支付最后一小时的加班费?
-
在第一个
else if语句中,您可以放心地省略&& hours < 60部分 - 第一个if已经检查过了。同样,最后一个else if可以变成一个简单的else。换句话说:'如果超过 60,就这样做。否则,如果它至少超过 40,请执行此操作。否则,请执行此操作。
标签: c# debugging methods logic