import java.util.*;
 
public class Area {
 public static Scanner entrada=new Scanner(System.in);
 
 public static void main(String[] args) {
  int opcion=-1;
  double base=0,altura=0,radio=0;
 
  while(opcion!=0){
   opcion=menu();
   switch(opcion) {
    case 1:
     // area de un cuadrado
     base=solicitarValor("Indica la base o altura: ");
     System.out.println("\nEl area del cuadrado es " + (base*base));
     break;
    case 2:
     // area de un rectangulo
     base=solicitarValor("Indica la base: ");
     altura=solicitarValor("Indica la altura: ");
     System.out.println("\nEl area del rectangulo es " + (base*altura));
     break;
    case 3:
     // area de un circulo
     radio=solicitarValor("Indica el radio: ");
     System.out.printf("\nEl area de la circunferencia es %1.2f\n", Math.PI*(Math.pow(radio,2)));
     break;
    case 4:
     // area de un triangulo
     base=solicitarValor("Indica la base: ");
     altura=solicitarValor("Indica la altura: ");
     System.out.printf("\nEl area del triangulo es %1.2f\n", (base*altura)/2);
     break;
   }
  }
  entrada.close();
 }
 
 private static double solicitarValor(String texto) {
  while(true){
   try {
    System.out.print(texto);
    return entrada.nextDouble();
   }catch(InputMismatchException e) {
    // Controlamos que siempre introduzca un valor numerico
    System.out.println("El valor tiene que ser numerico...");
    entrada.nextLine();
   }
  }
 }
 
 private static int menu() {
  int opcion=-1;
  System.out.println("\n\n---------------------------");
  System.out.println("1-Area de un cuadrado");
  System.out.println("2-Area de un rectangulo");
  System.out.println("3-Area de un circulo");
  System.out.println("4-Area de un trinagulo");
  System.out.println("0-Salir");
  System.out.println("Selecciona una opción");
  while(opcion<0) {
   try {
    opcion=entrada.nextInt();
   }catch(InputMismatchException e) {
    // Controlamos que siempre introduzca un valor numerico
    System.out.println("El valor tiene que ser numerico...");
    entrada.nextLine();
    opcion=-1;
   }
  }
 
  return opcion;
 }
}