/* Haz un programa que que muestre por consola un menu para
* calcular las areas de un cuadrado, rectangulo, triangulo
* y un circulo y segun la opcion elegida pida los datos necesarios
* para su calculo, muestre el calculo y retorne al menu */
import java.util.Scanner;
public class Main {
private static Scanner sc = new Scanner(System.in);
private static int opcion;
// Las opciones del menu
private static String[] menu =
{"Cuadrado", "Rectangulo", "Triangulo", "circulo"};
public static void main(String[] args) {
// Hacer mientras
do {
// Llamada al menu
opcion = menu();
// Si opcion = 0 termina, si es diferente vuelve a mostrar el menu
}while(opcion != 0);
}
/* Funcion que presenta un menu y ejecuta la opcion escogida */
private static int menu(){
System.out.println(" ** Opciones del Menu **");
System.out.println(" =======================");
// Se muestran las opciones del menu
for (opcion = 0; opcion < menu.length; opcion++) {
// Cada iteracion muestra una opcion del menu
System.out.println(
(opcion+1) + ") Calcula el area del: " + menu[opcion]);
}
System.out.println("===> Otro Salir\n");
System.out.print("Elija su opcion: ");
try {
opcion = sc.nextInt();
// Si se introduce una opcion no disponible terminara el programa
if (opcion < 1 || opcion > 4){
opcion = 0;
}
// Si no se introduce un int saltará un error, una excepcion
// que se recoge aqui, y podemos controlarla.
} catch (Exception e) {
opcion = 0;
}
// Limpia un poco la consola
System.out.println();
System.out.println();
System.out.println();
System.out.println();
System.out.println();
System.out.println();
System.out.println();
System.out.println();
System.out.println();
System.out.println();
System.out.println();
// Bloque switch case, segun la opcion selecionada
// se ejecuta el metodo que le corresponde
switch (opcion){
case 1:
calculaCuadrado();
break;
case 2:
calculaRectangulo();
break;
case 3:
calculaTriangulo();
break;
case 4:
calculaCirculo();
break;
default:
System.out.println("*** Fin de programa ***");
}
// retorna la opcion al main
// Si se produjo un calculo (opcion != 0) vuelve a mostrar el menu
return opcion;
}
/* Metodo que calcula el area de un cuadrado*/
private static void calculaCuadrado(){
System.out.println("Cuadrado");
/* Se pide el lado en la funcion datoNumerico()
* y se guarda en la variable lado, si es cero se aborta la operacion.*/
int lado = datoNumerico("lado");
if (lado != 0){
System.out.println
("El area del cuadrado es: " + lado * lado);
System.out.println
("* + * + * + * + * + * + * + * + * + * + *");
}
}
// Todos los metodos de calculo son parecidos
private static void calculaRectangulo(){
System.out.println("Rectangulo");
int lado1 = datoNumerico("un lado");
if (lado1 != 0){
int lado2 = datoNumerico("otro lado");
if (lado2 != 0){
System.out.println
("El area del cuadrado es: " + lado1 * lado2);
System.out.println
("* + * + * + * + * + * + * + * + * + * + *");
}
}
}
// Todos los metodos de calculo son parecidos
private static void calculaTriangulo(){
System.out.println("Triangulo");
int base = datoNumerico("base");
if (base != 0){
int altura = datoNumerico("altura");
if (altura != 0){
System.out.println
("El area del cuadrado es: " + base * altura / 2);
System.out.println
("* + * + * + * + * + * + * + * + * + * + *");
}
}
}
// Todos los metodos de calculo son parecidos
private static void calculaCirculo(){
System.out.println("Circulo");
int radio = datoNumerico("radio");
if (radio != 0){
System.out.println
("El area del circulo es: " +
(double) Math.PI * radio * radio);
System.out.println
("* + * + * + * + * + * + * + * + * + * + *");
}
}
/* Metodo que pide un entero por consola entre 1 y 1000
* si se introduce un 0 u otro valor no valido se entiende
* que se quiere abortar la operacion.
* Tiene un parametro String que trae informacion
* del dato que se pide */
private static int datoNumerico(String elemento){
int num = 0;
System.out.println("Introduzca un entero no mayor de 1000");
System.out.println("Introduzca " + elemento + ": ");
try {
num = sc.nextInt();
// Si el valor introducido no esta dentro de lo que
// hemos pedido, mandamos un cero al metodo
// que lo llamo
if(num < 1 || num > 1000) {
num = 0;
}
/* Si se introduce un numero con decimales o letras
* salta una excepcion que controlamos con el catch,
* haciendo que aborte la operacion */
} catch (Exception e) {
num = 0;
}
return num;
}
}
excelente
ResponderEliminarmuy bueno!!
ResponderEliminar