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;
	}
}

