Hola Ariel. He revisado tu código y,en líneas generales es correcto.Has utilizado bien la clase BigDecimal que en el fondo es de lo que se trataba el ejercicio.
Otra forma de hacerlo sería utilizando diferentes clases para la entrada de teclado y para los cálculos,en vez de hacerlo en el main.
Una posible solución que se me ocurre seria:
import java.math.BigDecimal;
import java.math.RoundingMode;
public class CalculadoraImpuesto{
public BigDecimal calculoImpuesto(BigDecimal importe,BigDecimal porcentaje_impuesto){
BigDecimal calculoImpuesto =importe.multiply (porcentaje_impuesto).divide(BigDecimal.valueOf(100.0));
calculoImpuesto = calculoImpuesto.setScale(2,RoundingMode.HALF_UP);
return calculoImpuesto;
}
}
import java.util.Scanner;
import java.math.BigDecimal;
public class EntradaTeclado {
public BigDecimal entradaTeclado(){
Scanner scan = new Scanner(System.in);
BigDecimal resultado = BigDecimal.valueOf(Double.valueOf(scan.nextLine()));
return resultado;
}
}
import java.math.BigDecimal;
import java.math.RoundingMode;
public class TestImpuesto{
public static void main(String[]args){
BigDecimal impuesto,importe,porcentaje_impuesto;
CalculadoraImpuesto d=new CalculadoraImpuesto();
EntradaTeclado f=new EntradaTeclado();
System.out.print("Por favor introduzca el importe inicial: ");
importe=f.entradaTeclado();
System.out.print("por favor introduzca el porcentaje de impuestos: ");
porcentaje_impuesto = f.entradaTeclado();
impuesto=d.calculoImpuesto(importe,porcentaje_impuesto);
System.out.println("El impuesto a pagar es: "+impuesto+"\nEl importe final es: "+importe.add(impuesto));
}
}
Un saludo