blob: d2e8199a492896882ec4a83a59260bdae4dd78f0 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
package Q2;
public class BonusOnSavings {
double annualRate = 0.0;
double quarterlyRate = 0.0;
public BonusOnSavings() {
this(0.03, 0.05);
}
public BonusOnSavings(double quarterlyRate, double annualRate) {
this.quarterlyRate = quarterlyRate;
this.annualRate = annualRate;
}
public double computeBonus(double monthlyCommitment, double q1, double q2, double q3, double q4) {
double quarterlyTarget = monthlyCommitment * 3;
double annualTarget = monthlyCommitment * 12;
return this.quarterlyBonus(quarterlyTarget, q1)
+ this.quarterlyBonus(quarterlyTarget, q2)
+ this.quarterlyBonus(quarterlyTarget, q3)
+ this.quarterlyBonus(quarterlyTarget, q4)
+ this.annualBonus(annualTarget, q1 + q2 + q3 + q4);
}
private double quarterlyBonus(double target, double actual) {
return (actual >= target) ? actual * this.quarterlyRate : 0.0;
}
private double annualBonus(double target, double actual) {
if (actual < target) return 0.0;
return (actual * this.annualRate) + ((actual - target) * 0.25);
}
}
|