Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Separating calculations into methods simplifies modifying and expanding programs

ID: 3820821 • Letter: S

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 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 +
" Tax rate: " + taxRate +
" Tax 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;
}
}

Explanation / Answer

IncomeTax.java

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 int readInput(Scanner scan){
       System.out.println(" Enter annual salary (0 to exit): ");
       int annualSalary = scan.nextInt();
       return annualSalary;
   }

   public static void main (String [] args) {
   Scanner scnr = new Scanner(System.in);
   int annualSalary = 0;
   double taxRate = 0.0;
   int taxToPay = 0;
   int [] salaryBase = { 20000, 50000, 100000, 999999999 };
   double [] taxBase = { .10, .20, .30, .40 };
  
   // FIXME: Change the input to come from a method
   annualSalary = readInput(scnr);
   while (annualSalary > 0) {
   taxRate = getCorrespondingTableValue(annualSalary, salaryBase, taxBase);
   taxToPay= (int)(annualSalary * taxRate); // Truncate tax to an integer amount
   System.out.println("Annual salary: " + annualSalary +
   " Tax rate: " + taxRate +
   " Tax to pay: " + taxToPay);
   // Get the next annual salary
   // FIXME: Change the input to come from a method
   annualSalary = readInput(scnr);
   }
   return;
   }
   }
     
Output:


Enter annual salary (0 to exit):
10000
Annual salary: 10000   Tax rate: 0.1   Tax to pay: 1000

Enter annual salary (0 to exit):
50000
Annual salary: 50000   Tax rate: 0.2   Tax to pay: 10000

Enter annual salary (0 to exit):
0

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote