Commit 1703953
Changed files (1)
src
Q10
src/Q10/README.md
@@ -7,11 +7,73 @@ Student ID: 3431709
Modify the following program to the specifications given below:
-* Add a new status `SingleParent` where the tax is computed as a SINGLE but with a further reduction of $5000 per child.
-* Add a new tax condition �
- * if the income is greater than $249,999 for SINGLE, then add a tax of 25% on income amount above $150,000;
- * if the income is greater than $349,999 for MARRIED, then add a tax of 35% on income amount above $200,000.
-* Unknown status � if the status doesn't belong to `SINGLE` or `MARRIED` or `SINGLE_PARENT`, then compute a 33% tax on the income.
+* I. Add a new status `SingleParent` where the tax is computed as a SINGLE but with a further reduction of $5000 per child.
+* II. Add a new tax condition - if the income is greater than $249,999 for SINGLE, then add a tax of 25% on income amount above $150,000; if the income is greater than $349,999 for MARRIED, then add a tax of 35% on income amount above $200,000.
+* III. Unknown status - if the status doesn't belong to `SINGLE` or `MARRIED` or `SINGLE_PARENT`, then compute a 33% tax on the income.
+
+```java
+import java.util.Scanner;
+
+public class TaxReturn {
+ public TaxReturn(double anIncome, int aStatus) {
+ income = anIncome;
+ status = aStatus;
+ }
+
+ public double getTax() {
+ double tax = 0;
+ if (status == SINGLE) {
+ if (income <= SINGLE_BRACKET1) tax = RATE1 * income;
+ else if (income <= SINGLE_BRACKET2)
+ tax = RATE1 * SINGLE_BRACKET1 + RATE2 * (income - SINGLE_BRACKET1);
+ else
+ tax =
+ RATE1 * SINGLE_BRACKET1
+ + RATE2 * (SINGLE_BRACKET2 - SINGLE_BRACKET1)
+ + RATE3 * (income - SINGLE_BRACKET2);
+ } else {
+ if (income <= MARRIED_BRACKET1) tax = RATE1 * income;
+ else if (income <= MARRIED_BRACKET2)
+ tax = RATE1 * MARRIED_BRACKET1 + RATE2 * (income - MARRIED_BRACKET1);
+ else
+ tax =
+ RATE1 * MARRIED_BRACKET1
+ + RATE2 * (MARRIED_BRACKET2 - MARRIED_BRACKET1)
+ + RATE3 * (income - MARRIED_BRACKET2);
+ }
+ return tax;
+ }
+
+ public static final int SINGLE = 1;
+ public static final int MARRIED = 2;
+ private static final double RATE1 = 0.15;
+ private static final double RATE2 = 0.28;
+ private static final double RATE3 = 0.31;
+ private static final double SINGLE_BRACKET1 = 21450;
+ private static final double SINGLE_BRACKET2 = 51900;
+ private static final double MARRIED_BRACKET1 = 35800;
+ private static final double MARRIED_BRACKET2 = 86500;
+ private double income;
+ private int status;
+
+ public static void main(String[] args) {
+ Scanner in = new Scanner(System.in);
+ System.out.print("Please enter your income: ");
+ double income = in.nextDouble();
+ System.out.print("Enter S (single) or M (married): ");
+ String input = in.next();
+ int status = 0;
+ if (input.equalsIgnoreCase("S")) status = TaxReturn.SINGLE;
+ else if (input.equalsIgnoreCase("M")) status = TaxReturn.MARRIED;
+ else {
+ System.out.println("Bad input.");
+ return;
+ }
+ TaxReturn aTaxReturn = new TaxReturn(income, status);
+ System.out.println("The tax is " + aTaxReturn.getTax());
+ }
+}
+```
2. Description of the Code: