/** * Assignment 1, COMP268 Class: TaxReturn.java * * @description Represents a contact from an address book. * @author: mo khan Student ID: 3431709 * @date May 6, 2019 * @version 1.0 */ package Q10; import java.util.Scanner; public class TaxReturn { private double income; private int status; private int children; /** * Constructs a TaxReturn object for a given income and marital status, and computes the tax. * * @param income the taxpayer income * @param status either SINGLE or MARRIED */ public TaxReturn(double income, int status) { this(income, status, 0); } /** * Constructs a TaxReturn object for a given income and marital status and, and # of children. * * @param income the taxpayer income * @param status either SINGLE or MARRIED * @param children the number of children */ public TaxReturn(double income, int status, int children) { this.income = income; this.status = status; this.children = children; if (this.isSingle()) this.income -= children * 5000; } /** * Returns the calculated taxes to pay. * * @return the amount of tax to pay. */ public double getTax() { double tax = 0; if (isSingle()) { 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); if (income > 249999.0) tax += (income - 150000) * 0.25; } else if (isMarried()) { 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); if (income > 349999.0) tax += (income - 200000) * 0.35; } else { tax = income * 0.33; } return tax; } public static final int SINGLE = 1; public static final int MARRIED = 2; public static final double RATE1 = 0.15; public static final double RATE2 = 0.28; public static final double RATE3 = 0.31; public static final double SINGLE_BRACKET1 = 21450; public static final double SINGLE_BRACKET2 = 51900; public static final double MARRIED_BRACKET1 = 35800; public static final double MARRIED_BRACKET2 = 86500; private boolean isSingle() { return this.status == SINGLE; } private boolean isMarried() { return this.status == MARRIED; } 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()); } }