/ CalcularPrecio.java
CalcularPrecio.java
  1  /*
  2  Realiza un programa que dado el precio de un artículo y el IVA a aplicar mostrará como resultado
  3  el precio con el iva aplicado. Siendo los IVAS posibles: 4 %,10 % y 21 %.
  4  
  5  Preguntas a hacerme:
  6   - ¿Cómo validaré que el usuario solo pueda elegir 4, 10 o 21?
  7   - ¿Qué pasa si elige otro número?
  8  - ¿Usaré double para el precio o int?
  9  */
 10  
 11  import java.util.Scanner;
 12  
 13  public class CalcularPrecio {
 14      public static void main(String[] args) {
 15          /*
 16           * Scanner: Clase de java.util que permite leer entrada de datos
 17           * - sc: variable de tipo Scanner que referencia al objeto Scanner que usaremos
 18           * para leer datos
 19           * - new Scanner(System.in): crea una nueva instancia del objeto Scanner
 20           * - System.in: argumento que representa flujo estándar de entrada (teclado)
 21           */
 22          Scanner sc = new Scanner(System.in);
 23  
 24          // Pedir precio
 25          double precio = 0;
 26          // Constantes
 27          final double IVA4 = 1.04;
 28          final double IVA10 = 1.10;
 29          final double IVA21 = 1.21;
 30  
 31          // Check si el dato es válido
 32          boolean datoValido = false;
 33          while (!datoValido) {
 34              try {
 35                  System.out.print("Añade el precio de un artículo hipotético: ");
 36                  precio = sc.nextDouble();
 37                  sc.nextLine();
 38                  datoValido = true;
 39                  System.out.println(precio);
 40              } catch (Exception e) {
 41                  System.out.println("El dato debe ser numérico.");
 42                  sc.nextLine();
 43              }
 44          }
 45  
 46          // Pedir IVA a aplicar
 47          boolean eleccionbuena = false;
 48          while (!eleccionbuena) {
 49              int iva = eleccionIva(sc);
 50              double resultado;
 51              switch (iva) {
 52  
 53                  case 1:
 54                      System.out.println("Has elegido 1");
 55                      resultado = precio * IVA4;
 56                      System.out.println("El PVP con el IVA al 4% es de: " + resultado);
 57                      eleccionbuena = true;
 58                      break;
 59                  case 2:
 60                      resultado = precio * IVA10;
 61                      System.out.println("El PVP con el IVA al 10% es de: " + resultado);
 62                      eleccionbuena = true;
 63                      break;
 64                  case 3:
 65                      System.out.println("Has elegido 3");
 66                      resultado = precio * IVA21;
 67                      System.out.println("El PVP con el IVA al 21% es de: " + resultado);
 68                      eleccionbuena = true;
 69                      break;
 70  
 71                  default:
 72                      System.out.println("La respuesta debe ser: 1, 2 o 3.");
 73              }
 74          }
 75  
 76          sc.close();
 77  
 78      }
 79  
 80      public static int eleccionIva(Scanner sc) {
 81          int eleccion = 0;
 82          boolean eleccionValida = false;
 83  
 84          while (!eleccionValida) {
 85              try {
 86                  System.out.println("Elige qué IVA se le debe aplicar.");
 87                  System.out.println("Pulsa 1. Si quieres IVA al 4% ");
 88                  System.out.println("Pulsa 2. Si quieres IVA al 10% ");
 89                  System.out.println("Pulsa 3. Si quieres IVA al 21% ");
 90                  System.out.println("------------------------------");
 91  
 92                  System.out.print("Elige 1, 2 o 3: ");
 93                  eleccion = sc.nextInt();
 94                  sc.nextLine();
 95                  eleccionValida = true;
 96  
 97              } catch (Exception e) {
 98                  System.out.println("La respuesta debe ser: 1, 2 o 3.");
 99                  sc.nextLine();
100              }
101          }
102  
103          return eleccion;
104      }
105  }