Question: Separating calculations into methods simplifies modifying and expanding programs. The following program calculates the tax rate and tax to pay, using methods. One method returns
Separating calculations into methods simplifies modifying and expanding programs.
The following program calculates the tax rate and tax to pay, using methods. One method returns a tax rate based on an annual salary.
Run the program below with annual salaries of 40000, 60000, and 0.
Change the program to use a method to input the annual salary.
Run the program again with the same annual salaries as above. Are results the same?
This is the code including what I am working on added. I will not run. I need to remove some areas to designate the scanner as the source of input but I am unsure of which area.
import java.util.Scanner;
public class IncomeTax { // Method to get a value from one table based on a range in the other table public static double getCorrespondingTableValue(int search, int [] baseTable, double [] valueTable) { int baseTableLength = baseTable.length; double value = 0.0; int i = 0; boolean keepLooking = true;
i = 0; while ((i < baseTableLength) && keepLooking) { if (search <= baseTable[i]) { value = valueTable[i]; keepLooking = false; } else { ++i; } }
return value; } public static void readInput(int salaryOne, int salaryTwo, int salaryThree); annualSalary = 0; Scanner scnr = new Scanner(System.in); scnr nextInt(); new annualSalary; public static void main (String [] args) { Scanner scnr = new Scanner(System.in); int annualSalary = 0; double taxRate = 0.0; int taxToPay = 0; int i = 0;
int [] salaryBase = { 20000, 50000, 100000, 999999999 }; double [] taxBase = { .10, .20, .30, .40 }; // FIXME: Change the input to come from a method System.out.println(" Enter annual salary (0 to exit): "); annualSalary = scnr.nextInt();
while (annualSalary > 0) { taxRate = getCorrespondingTableValue(annualSalary, salaryBase, taxBase);
taxToPay= (int)(annualSalary * taxRate); // Truncate tax to an integer amount System.out.println("Annual salary: " + annualSalary + "\tTax rate: " + taxRate + "\tTax to pay: " + taxToPay);
// Get the next annual salary // FIXME: Change the input to come from a method System.out.println(" Enter annual salary (0 to exit): "); annualSalary = scnr.nextInt(); }
return; } }
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
