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.

 

import java.util.Scanner;

public class TaxReturn

   /**

      Constructs a TaxReturn object for a given income and

      marital status, and computes the tax.

      @param anIncome the taxpayer income

      @param aStatus either SINGLE or MARRIED

   */  

   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());

   }

}

 

 

 

 

    • 10 years ago
    A+ Work
    NOT RATED

    Purchase the answer to view it

    • 30ojmnk2.zip
    • p1o1.docx