import java.util.Scanner;

public class kalcu {

	public static void main(String[] args) {
		/* instancia y creacion del objeto para capturar desde teclado */
		Scanner capturar = new Scanner(System.in);

		/* declaracion de variables */
		double num1, num2, op, resultado;

		/* caprtura de las variables desde la consola */
		System.out
				.print("por favor seleccione la opcion deseada:\npara sumar digite 1\npara restar digite 2\n para multiplicar digite 3\npara dividir digite 4\n para el residuo digite 5\n\n");
		op = capturar.nextDouble();
		/*
		 * evaluacion cuando se ingrese un numero que no pertenezca a las
		 * opciones validas usando un metodo llamada error()
		 */
		while (error(op)) {
			/*
			 * repite hasta que la opcion sea valida para continuar con el
			 * proceso de la calculadora dependiendo del metodo error() que
			 * devuelva falso o verdadero
			 */
			System.out
					.print("por favor seleccione la opcion deseada:\npara sumar digite 1\npara restar digite 2\n para multiplicar digite 3\npara dividir digite 4\n para el residuo digite 5\n\n");
			op = capturar.nextInt();

		}
		/*
		 * ejecucion del programa
		 */
		System.out.print("digite el primer numero a calcular\n\n");
		num1 = capturar.nextDouble();
		System.out.print("digite el segundo numero a calcular\n\n");
		num2 = capturar.nextDouble();
		/* llamado del metodo calculadora */
		resultado = calc(num1, num2, op);
		System.out.print("el resultado es:\n\n" + resultado + "\n\n"
				+ operacion(op));
		// }
	}

	/* *******************************************************************************************
	 * ******************************************************************************************
	 */
	// declaracion de un metodo
	public static double calc(double x, double y, double op) {
		double resultado = 0;
		if (op == 1) {
			resultado = x + y;
		} else if (op == 2) {
			resultado = x - y;
		} else if (op == 3) {
			resultado = x * y;
		} else if (op == 4) {
			resultado = x / y;
		} else if (op == 5) {
			resultado = x % y;
		}
		return resultado;
	}

	/* ******************************************************************************************
	 * ******************************************************************************************
	 */
	/*
	 * DECLARACION DE OTRO METODO DE TIPO boolean EL CUAL DEVUELVE UNA IMPRESION
	 * EN PANTALLA y un estado falso o verdadero
	 */
	public static boolean error(double op) {
		if (op < 1 || op > 5) {
			System.out
					.print("ERROR EN OPCION INGRESADA VUELVA A EJECUTAR EL PROGRAMA\n\n");
			return true;
		} else
			return false;
	}

	/* ******************************************************************************************
	 * ******************************************************************************************
	 */
	/*
	 * DECLARACION DE OTRO METODO DE TIPO String EL CUAL recibe la variable de
	 * operacion y DEVUELVE una variable de tipo String basado en la operacion
	 * ejecutada
	 */
	public static String operacion(double op) {
		String opera = null;
		if (op == 1) {
			opera = "LA OPERACION EJECUTADA ES SUMA\n\nGRACIAS\n";
		} else if (op == 2) {
			opera = "LA OPERACION EJECUTADA ES RESTA\n\nGRACIAS\n";
		} else if (op == 3) {
			opera = "LA OPERACION EJECUTADA ES MULTIPLICACION\n\nGRACIAS\n";
		} else if (op == 4) {
			opera = "LA OPERACION EJECUTADA ES DIVISION\n\nGRACIAS\n";
		} else if (op == 5) {
			opera = "LA OPERACION EJECUTADA ES RESIDUO\n\nGRACIAS\n";
		}
		return opera;
	}
}

