Programming Example: tax computation Introduction • In this webpage, we will study a programming example using the conditional statements (if and if-else) to write a Java program to compute the tax owed. Formula to compute the tax owed • Decision diagram to compute taxes owed: Formula to compute the tax owed (cont.) • Example 1: someone single earning $40,000 pays: • 15% of $21,450, plus • 28% of ($40,000 − $21,450) Formula to compute the tax owed (cont.) • Graphically: Formula to compute the tax owed (cont.) • Example 2: someone single earning $60,000 pays: •15% of $21,450, plus •28% of ($51,900 - $21,450), plus •31% of ($60,000 - $51,900) Formula to compute the tax owed (cont.) • Graphically: Formula to compute the tax owed (cont.) • Algorithm: Define the following constants: S1 = 21450 S2 = 30450 M1 = 35800 M2 = 86500 Formula to compute the tax owed (cont.) • Structure diagram: Formula to compute the tax owed (cont.) • Example input: status = 'S' and income = 40000 Formula to compute the tax owed (cont.) • The tax computation algorithm in Java: (The whole program is too large to show here). if ( status == 'S' ) { // ***** single if ( income <= S1 ) tax = RATE1 * income; else if ( income <= S2 ) tax = RATE1 * S1 + RATE2 * (income - S1); else tax = RATE1 * S1 + RATE2 * (S2 - S1) + RATE3 * (income - S2); } Formula to compute the tax owed (cont.) else { // ***** married if ( income <= M1 ) tax = RATE1 * income; else if ( income <= M2 ) tax = RATE1 * M1 + RATE2 * (income - M1); else tax = RATE1 * M1 + RATE2 * (M2 - M1) + RATE3 * (income - M2); } Formula to compute the tax owed (cont.) • Constants used in the program: RATE1 = 0.15 RATE2 = 0.28 RATE3 = 0.31 S1 = 21450 S2 = 51900 M1 = 35800 M2 = 86500 (Tax rate) (Income brackets) Formula to compute the tax owed (cont.) • Java program: import java.util.Scanner; public class ComputeTax { public static void main(String[] args) { final double RATE1 = 0.15; // Tax rates final double RATE2 = 0.25; final double RATE3 = 0.31; final double S1 = 21450.0; final double S2 = 51900.0; final double M1 = 35800.0; final double M2 = 86500.0; // Tax brackets for single // Tax brackets for married Formula to compute the tax owed (cont.) char status; double income = 0; double tax = 0; Scanner in = new Scanner(System.in); // Construct Scanner object System.out.print("Enter status (S or M) = "); status = in.next().charAt(0); // Read in status System.out.print("Enter income = "); income = in.nextDouble(); // Read in income >>>> Insert the Tax Computation Algorithm (see above) here <<<< System.out.println("Tax = " + tax); } } Formula to compute the tax owed (cont.) • Programming advice: • Using symbolic constants in computer program is highly recommended because when the tax rates or income brackets changes, we can easily accommodate the changes by changing the values of the constant definitions at the start of the program. • We don't have to search for the constants inside the program ! Formula to compute the tax owed (cont.) • Example Program: (The entire program is here) – Prog file: http://mathcs.emory.edu/~cheung/Courses/170/Syllabus/06/Progs/ ComputeTax.java • How to run the program: • Right click on link and save in a scratch directory • To compile: javac ComputeTax.java • To run: java ComputeTax