diff --git a/src/RepasoMetodos.java b/src/RepasoMetodos.java new file mode 100644 index 0000000..320c301 --- /dev/null +++ b/src/RepasoMetodos.java @@ -0,0 +1,135 @@ +import java.util.*; + +public class RepasoMetodos { + + static Scanner sc; + + public static void main(String[] args) { + sc = new Scanner(System.in); + int opt = mostrarMenu(); + int figura = seleccionarFigura(); + double resultado = -1.0; + int[] lados; + switch(figura){ + case 1: // Cuadrado + System.out.print("Longitud del lado: "); + int lado = leerEnteroPositivo(); + lados = new int[4]; + for(int i = 0; i < 4; i++){ + lados[i] = lado; + } + resultado = (opt == 1) ? areaCuadrado(lado) : perimetroPoligono(lados); + break; + case 2: // Triangulo + lados = new int[3]; + for(int i = 0; i < 3; i++){ + System.out.printf("Longitud del lado %d: ", i+1); + lados[i] = leerEnteroPositivo(); + } + resultado = (opt == 1) ? areaTriangulo(lados) : perimetroPoligono(lados); + break; + case 3: // Circulo + System.out.print("Radio del círculo: "); + int radio = leerEnteroPositivo(); + resultado = (opt == 1) ? areaCirculo(radio) : perimetroCirculo(radio); + break; + default: + break; + } + System.out.printf("El resultado es %.2f\n", resultado); + } + + // Área del círculo (PI * r^2) + private static double areaCirculo(int radio){ + return Math.PI * (radio * radio); + } + + // Perímetro del círculo (2 * PI * r) + private static double perimetroCirculo(int radio){ + return 2 * Math.PI * radio; + } + + // Perímetro de cualquier polígono + private static double perimetroPoligono(int[] lados) { + double resultado = 0.0; + for(int l : lados) resultado += l; + return resultado; + } + + // Area cuadrado + private static double areaCuadrado(int lado){ + return lado * lado; + } + + // Area del triangulo (formula de Herón) + private static double areaTriangulo(int[] lados){ + if(lados.length != 3) { + System.out.println("El triangulo tiene que tener 3 lados"); + return -1.0; + } + + double semiperimetro = perimetroPoligono(lados) / 2.0; + double resultado = semiperimetro; + + for(int i = 0; i < 3; i++){ + resultado *= semiperimetro - lados[i]; + } + + resultado = Math.sqrt(resultado); + + return resultado; + } + + + private static int seleccionarFigura(){ + System.out.println("Selecciona una figura:\n"+ + "1. Cuadrado\n"+ + "2. Triángulo\n"+ + "3. Círculo"); + int resultado = -1; + boolean parar = false; + while(!parar){ + System.out.print("Elige una opción: "); + resultado = leerEnteroPositivo(); + if(resultado <= 3) parar = true; + else System.out.printf("%d no es una figura valida", resultado); + } + return resultado; + } + + private static int mostrarMenu() { + System.out.print( + "¿Qué desea calcular?\n" + + "1. Área\n" + + "2. Perímetro\n" + ); + boolean salir = false; + int resultado = -1; + while (!salir) { + System.out.print("Elige una opción: "); + resultado = leerEnteroPositivo(); + if (resultado <= 2) salir = true; + else System.out.println("Debe ser 1 o 2"); + } + return resultado; + } + + private static int leerEnteroPositivo() { + int resultado = -1; + boolean parar = false; + while (!parar) { + try { + resultado = sc.nextInt(); + if (resultado > 0) { + parar = true; + } else { + System.out.println("Debe ser un número entero positivo"); + } + } catch (InputMismatchException e) { + System.out.println("No es un número entero válido"); + sc.next(); + } + } + return resultado; + } +}