العامل الثلاثي هو بديل خفيف وموجز للجمل الشرطية if/else البسيطة.
يُستخدم عادةً في عبارات الإرجاع (وليس حصرًا فيها)، ويحتاج إلى سطر واحد فقط لاتخاذ القرار، فيُرجع القيمة اليسرى إذا كان التعبير true، والقيمة اليمنى إذا كان false، كما يلي:
boolean expr = 0 != 200;
// Ternary statement
int value = expr ? 22 : 33;
// => 22
يمكن تبسيط الكثير من تعبيرات if/else البسيطة باستخدام العوامل الثلاثية.
في هذا التمرين، ستُنفّذ قواعد لحساب الراتب الإجمالي لموظف في شهر واحد. تحتاج شركة International Siderurgy Company (ISC) إلى مساعدة في حساب رواتب الموظفين، مع مراعاة عوامل مختلفة قد تؤثّر على الأجر النهائي.
لديك ثلاث مهام، وعليك استخدام العامل الثلاثي بدلًا من جمل if/else الشرطية لتنفيذها.
نفّذ طريقة salaryMultiplier، التي تُرجع مضاعف الراتب بناءً على عدد الأيام التي تغيّب فيها الموظف عن العمل.
طبّق خصمًا بنسبة 15% إذا تغيّب الموظف خمسة أيام على الأقل.
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
سجّل في Exercism لتتعلّم وتتقن Java عبر 26 مفهومًا158 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.