«عملگر سهتایی» جایگزینی سبک و فشرده برای دستورهای سادهی if/else است.
معمولاً در دستورهای return استفاده میشود (اما محدود به آنها نیست) و فقط یک خط برای تصمیمگیری لازم دارد: اگر عبارت true باشد مقدار سمت چپ و اگر false باشد مقدار سمت راست را برمیگرداند، بهصورت زیر:
boolean expr = 0 != 200;
// Ternary statement
int value = expr ? 22 : 33;
// => 22
بسیاری از عبارتهای سادهی if/else را میتوان با عملگر سهتایی ساده کرد.
در این تمرین، قوانینی را برای محاسبهی مجموع حقوق یک کارمند در یک ماه پیادهسازی میکنید. شرکت بینالمللی سیدرورژی (ISC) برای محاسبهی حقوق کارکنان به کمک نیاز دارد و باید عوامل مختلفی را که میتوانند بر دستمزد نهایی اثر بگذارند، در نظر بگیرد.
شما ۳ کار پیش رو دارید و برای پیادهسازی آنها باید بهجای دستورهای if/else از «عملگر سهگانه» استفاده کنید.
متد salaryMultiplier را پیادهسازی کنید که ضریب حقوق را بر اساس تعداد روزهایی که کارمند از کار غیبت کرده، برمیگرداند.
اگر کارمند حداقل ۵ روز غیبت کرده باشد، ۱۵٪ جریمه اعمال کنید.
int daysSkipped = 3;
salaryMultiplier(daysSkipped);
// => 1.0
daysSkipped = 7;
salaryMultiplier(daysSkipped);
// => 0.85
متدهای bonusMultiplier و bonusForProductsSold را پیادهسازی کنید.
شرکت ISC برای هر محصول فروختهشده ۱۰ واحد پولی میپردازد و اگر کارمند ۲۰ محصول یا بیشتر بفروشد، ضریب به ۱۳ افزایش مییابد.
متد 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