diff --git a/src/Metodos8.java b/src/Metodos8.java new file mode 100644 index 0000000..bb52993 --- /dev/null +++ b/src/Metodos8.java @@ -0,0 +1,109 @@ +import java.util.*; +public class Metodos8 { + public static void main(String[] args) { + Scanner sc = new Scanner(System.in); + int altura, anchura; + boolean terminar = false; + while(!terminar){ + System.out.println("=== Menú de Figuras ===\n" + + "1. Rectángulo\n" + + "2. Triángulo\n" + + "3. Rombo\n" + + "0. Salir\n" + + "Elige una opción:"); + int opt = leerEnteroPositivo(sc); + switch(opt){ + case 1: + System.out.println("Introduce el ancho del rectángulo"); + anchura = leerEnteroPositivo(sc); + System.out.println("Introduce la altura del rectángulo"); + altura = leerEnteroPositivo(sc); + dibujarRectangulo(anchura, altura); + break; + case 2: + System.out.println("Introduce la altura del triangulo"); + altura = leerEnteroPositivo(sc); + dibujarTriangulo(altura); + break; + case 3: + System.out.println("Introduce la altura del rombo"); + altura = leerEnteroPositivo(sc); + if((altura & 1) != 1) { + System.out.println("ERROR: Es un numero impar"); + continue; + } + dibujarRombo(altura); + break; + case 0: + return; + default: + } + } + sc.close(); + } + + private static void pintar(char c, int len){ + for(int i = 0; i < len; i++) System.out.printf("%c", c); + } + + private static void dibujarTriangulo(int altura){ + int longitud = altura * 2 - 1; + for(int i = 0; i < altura; i++){ + int asteriscos = i * 2 + 1; + int espacios = (longitud - asteriscos) / 2; + pintar(' ', espacios); + pintar('*', asteriscos); + System.out.println(); + } + } + + private static void dibujarRombo(int altura) { + int espacios = altura / 2; + int asteriscos = 1; + + for (int i = 1; i <= altura / 2; i++) { + pintar(' ', espacios); + espacios--; + pintar('*', asteriscos); + asteriscos += 2; + System.out.println(); + } + + pintar('*', altura); + System.out.println(); + + asteriscos -= 2; + + for (int i = 1; i <= altura / 2; i++) { + espacios++; + pintar(' ', espacios); + pintar('*', asteriscos); + asteriscos -= 2; + System.out.println(); + } + } + private static void dibujarRectangulo(int anchura, int altura){ + for(int i = 0; i < altura; i++) { + pintar('*', anchura); + System.out.println(); + } + } + + private static int leerEnteroPositivo(Scanner sc) { + boolean parar = false; + int n = -1; + while (!parar) { + try { + n = sc.nextInt(); + } catch (Exception e) { + System.out.println("Numero invalido vuelve a insertar uno"); + sc.nextLine(); + continue; + } + if (n > 0) parar = true; + else System.out.println("Tiene que ser un numero positivo!"); + } + sc.nextLine(); + return n; + } +}