_三元运算符_是一种轻量、紧凑的写法,可以替代简单的 if/else 语句。
它通常用在返回语句中(但不限于此),只需一行就能完成判断:如果表达式为 true,就返回左边的值;如果为 false,就返回右边的值,如下所示:
boolean expr = 0 != 200;
// Ternary statement
int value = expr ? 22 : 33;
// => 22
很多简单的 if/else 表达式都可以用_三元运算符_来简化。
在本练习中,你将实现计算员工一个月总薪资的规则。 国际钢铁公司(ISC)需要有人帮忙计算员工薪资,并要考虑到各种可能影响最终薪资的因素。
共有三个任务,你应该使用三元运算符而不是 if/else 语句来实现它们。
实现 salaryMultiplier 方法,它根据员工旷工的天数返回薪资乘数。
如果员工旷工至少 5 天,就扣减 15%。
int daysSkipped = 3;
salaryMultiplier(daysSkipped);
// => 1.0
daysSkipped = 7;
salaryMultiplier(daysSkipped);
// => 0.85
实现 bonusMultiplier 和 bonusForProductsSold 方法。
ISC 每售出一件产品支付 10 个货币单位,如果员工售出 20 件或更多产品,乘数就提高到 13。
bonusMultiplier 应确定应用哪个乘数,bonusForProductSold 应返回以货币单位计算的总奖金。
int productsSold = 21;
bonusMultiplier(productsSold);
// => 13
bonusForProductsSold(productsSold);
// => 273
productsSold = 5;
bonusMultiplier(productsSold);
// => 10
bonusForProductsSold(productsSold);
// => 50
实现 finalSalary 方法。
它应将基本薪资 1000.00 乘以薪资乘数,加上奖金,然后返回结果。
不过,薪资上限为 2000.00。
int daysSkipped = 2;
int productsSold = 3;
finalSalary(daysSkipped, productsSold);
// => 1030.00
productsSold = 90;
finalSalary(daysSkipped, productsSold);
// => 2000.00