/****************************************************************************** * This program computes employee and employer FICA and FUTA taxes. * * Copyright © 2020 Richard Lesh. All rights reserved. *****************************************************************************/ import org.pureprogrammer.Utils; public class FICA3 { static final double SS_TAX_RATE = 0.062; static final double SS_LIMIT = 127200.0; static final double MEDICARE_TAX_RATE1 = 0.0145; static final double MEDICARE_TAX_RATE2 = 0.0235; static final double MEDICARE_BREAKPOINT = 200000.0; static final double FUTA_TAX_RATE = 0.06; static final double FUTA_BREAKPOINT = 7000.0; public static void main(String[] args) { if (args.length != 2) { System.out.println(Utils.format("Syntax: {0:s} annual_wages annual_tips", "FICA3")); System.exit(1); } final double ANNUAL_WAGES = Utils.stodWithDefault(args[0], 0.0); final double ANNUAL_TIPS = Utils.stodWithDefault(args[1], 0.0); final double ANNUAL_EARNINGS = ANNUAL_WAGES + ANNUAL_TIPS; double ssTax; if (ANNUAL_EARNINGS < SS_LIMIT) { ssTax = ANNUAL_EARNINGS * SS_TAX_RATE; } else { ssTax = SS_LIMIT * SS_TAX_RATE; } double medicareTax; double employerMedicareTax; if (ANNUAL_EARNINGS <= MEDICARE_BREAKPOINT) { medicareTax = ANNUAL_EARNINGS * MEDICARE_TAX_RATE1; employerMedicareTax = ANNUAL_EARNINGS * MEDICARE_TAX_RATE1; } else { medicareTax = MEDICARE_BREAKPOINT * MEDICARE_TAX_RATE1 + (ANNUAL_EARNINGS - MEDICARE_BREAKPOINT) * MEDICARE_TAX_RATE2; employerMedicareTax = ANNUAL_EARNINGS * MEDICARE_TAX_RATE1; } double futaTax; if (ANNUAL_EARNINGS <= FUTA_BREAKPOINT) { futaTax = ANNUAL_EARNINGS * FUTA_TAX_RATE; } else { futaTax = FUTA_BREAKPOINT * FUTA_TAX_RATE; } final double NET_EARNINGS = ANNUAL_EARNINGS - ssTax - medicareTax; final double EMPLOYER_CONTRIBUTIONS = ANNUAL_EARNINGS + ssTax + employerMedicareTax + futaTax; System.out.println(Utils.format("Annual Earnings: ${0:.2f}", ANNUAL_EARNINGS)); System.out.println(Utils.format("Social Security Tax: ${0:.2f}", ssTax)); System.out.println(Utils.format("Medicare Tax: ${0:.2f}", medicareTax)); System.out.println(Utils.format("Employer Social Security Tax: ${0:.2f}", ssTax)); System.out.println(Utils.format("Employer Medicare Tax: ${0:.2f}", employerMedicareTax)); System.out.println(Utils.format("Federal Unemployment Tax: ${0:.2f}", futaTax)); System.out.println(Utils.format("Net Earnings: ${0:.2f}", NET_EARNINGS)); System.out.println(Utils.format("Employer Contributions: ${0:.2f}", EMPLOYER_CONTRIBUTIONS)); } }