Answer:
import java.util.Scanner;
import java.math.BigDecimal;
import java.math.RoundingMode;
public class TaxCalculator {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Enter your name: ");
String name = scanner.nextLine();
System.out.print("Enter your gross income: ");
BigDecimal grossIncome = scanner.nextBigDecimal();
System.out.print("Enter your state tax rate (%): ");
BigDecimal stateTaxRate = scanner.nextBigDecimal();
scanner.close();
BigDecimal federalTaxRate = new BigDecimal("9.45");
BigDecimal ficaTaxRate = new BigDecimal("7.65");
BigDecimal federalTax = grossIncome.multiply(federalTaxRate.divide(BigDecimal.valueOf(100)));
BigDecimal ficaTax = grossIncome.multiply(ficaTaxRate.divide(BigDecimal.valueOf(100)));
BigDecimal stateTax = grossIncome.multiply(stateTaxRate.divide(BigDecimal.valueOf(100)));
BigDecimal estimatedTax = federalTax.add(ficaTax).add(stateTax);
estimatedTax = estimatedTax.setScale(2, RoundingMode.HALF_UP);
System.out.println("Name: " + name);
System.out.println("Gross Income: $" + grossIncome);
System.out.println("Estimated Tax: $" + estimatedTax);
Explanation: When working with financial values it is highly recommended to use Big Decimal instead of a regular float or double to ensure there are no floating point precission issues.