A program may execute the same computations repeatedly.
The program below repeatedly asks the user to enter an annual salary, stopping when the user enters 0 or less. For each annual salary, the program determines the tax rate and computes the tax to pay.
- Run the program below with annual salaries of 40000, 90000, and then 0.
- Modify the program to use a while loop inside the given while loop. The new inner loop should repeatedly ask the user to enter a salary deduction, stopping when the user enters a 0 or less. The deductions are summed and then subtracted from the annual income, giving an adjusted gross income. The tax rate is then calculated from the adjusted gross income.
- Run the program with the following input: 40000, 7000, 2000, 0, and 0. Note that the 7000 and 2000 are deductions
import java.util.Scanner;
public class IncomeTax {
public static void main (String [] args) {
Scanner scnr = new Scanner(System.in);
final String SALARY_PROMPT = "nEnter annual salary (0 to exit): ";
int annualSalary = 0;
int deduction = 0;
int totalDeductions = 0;
double taxRate = 0.0;
int taxToPay = 0;
System.out.println(SALARY_PROMPT);
annualSalary = scnr.nextInt();
while (annualSalary > 0) {
// FIXME: Add a while loop to gather deductions. Use the variables
// deduction and totalDeduction for deduction handling.
// End the inner while loop when a deduction <= 0 is entered.
// Determine the tax rate from the annual salary
if (annualSalary <= 20000) {
taxRate = 0.10; // 0.10 is 10% written as a decimal
}
else if (annualSalary <= 50000) {
taxRate = 0.20;
}
else if (annualSalary <= 100000) {
taxRate = 0.30;
}
else {
taxRate = 0.40;
}
taxToPay = (int)(annualSalary * taxRate); // Truncate tax to an integer amount
System.out.println("Annual salary: " + annualSalary);
System.out.println("Tax rate: " + taxRate);
System.out.println("Tax to pay: " + taxToPay);
// Get the next annual salary
System.out.println(SALARY_PROMPT);
annualSalary = scnr.nextInt();
}
return;
}