Sei sulla pagina 1di 6

/**

*
* @author brayan mesa
*/
public class Calendario {
/************************
* atributos o variables
**********************
*/
static int nroMes = 0, nroAño = 0;
static int nroDias = 0;
static String nombreMes = "";
final static int febrero = 2;
/*
* declaracion de metodos
*/
/*Metodo main es propio de java y es necesario para la ejecucion del program
a java
* sin este metodo la clase no puede ser ejecutada.
* @param args (el @param args indica que recibe el METODO) recibe el nombre
de la clase que desea ejecutar
* @return void //(el @return indica que retorna el metodo )pero NO retorna
ningun argumento,
* esto se sabe porque tiene la declaracion void....
*/
public static void main(String args[]) {
mensajeBienvenida();
inicio();
}
/*
* metodo para mostrar un mensaje de bienvenida
*/
private static void mensajeBienvenida() {
JOptionPane.showMessageDialog(null, "Bienvenido" + "\n"
+ "Programacion Basica en Java" + "\n"
+ "Programa Calendario" + "\n"
+ "El programa le indica el nombre y numero de dias del mes ingr
esado");
//muestra un mensaje por consola
System.out.println("bienvenido........." + "\n"
+ "Programacion basica en java" + "\n"
+ "Programa calendario" + "\n"
+ "El programa le indica el nombre y numero de dias del mes ingr
esado");

}
/*
* metodo inicial el cual realiza el llamado de todos los demas metodos
* que permiten la funcionalidad de la aplicacion
*/
private static void inicio() {
//llama al metodo que solicita el numero del mes sl usuario
nroMes = solicitarNroMes();
//si es febrero llama al metodo que solicita el numero de año al usuario
if (nroMes == febrero) {
nroAño = solicitarnroAño();
}
//llama al metodo para determinar el nombre del mes
nombreMes = determinarNombreMes(nroMes);
//llama al metodo para determinar los numeros de dias del mes
nroDias = determinarNroDias(nroMes, nroAño);
//llama al metodo que muestra la respuesta al usuario
mostrarMensajeRespuesta(nroAño, nroMes, nombreMes, nroDias);
//llama al metodo que desea validar otro mes
consultarOtroMes();
}//cierrra el metodo inicio

/*
* metodo utilizado para solicitar el numero del mes
* @return int//retorna el numero de mes al usuario
*/
private static int solicitarNroMes() {
int nroMesSolicitado = 0;
String nroMesIngresado = "";
while (nroMesSolicitado == 0) {
nroMesIngresado = JOptionPane.showInputDialog("digite el numero del
mes");
if (validarDatoEsNumerico(nroMesIngresado) == true) {
nroMesSolicitado = Integer.parseInt(nroMesIngresado);
//valida que nroMes se encuentre dentro del rango valido
if ((nroMesSolicitado <= 0) || (nroMesSolicitado > 12)) {
//construye un mensaje por error JOptionpane.errror_message
JOptionPane.showMessageDialog(null,
"numero del mes fuera del rango" + "\n"
+ "solo se permite el ingreso de numeros entre 1 y 1
2" + "\n"
+ "y se ha ingresado el numero :" + nroMesSolicitado
+ "\n"
+ "verifique e intente nuevamente",
"mensaje de ERROR : entrada invalida",
JOptionPane.ERROR_MESSAGE);
nroMesSolicitado = 0;//asigna cero nuevamente para que se re
pita la solicitud del mes
}
}
}
return nroMesSolicitado;
}//cierra el metodo solicitarNroMes
/*
* metodo generico utilizado para validar si un dato recibido es numerico, u
tiliza el manejo de excepciones
* con la declarcion el try y el catch;si se puede hacer Integer,parseInt(da
toIngresado) es por que la
* entrada es numerica,pero de no ser posible el programa se salta el catch
y reporta el mensaje de error
* que le indiquemos
* @param datoingresado
* return boolean//retorna falso o verdadero dependiendo si el dato es numer
ico o no
*/
private static boolean validarDatoEsNumerico(String datoIngresado) {
if (datoIngresado == null)//ocurre cuando no se ingresa ningun dato y se
oprime el boton cancelar
{
cerrarAplicacion();
}
try {
Integer.parseInt(datoIngresado);
return false;
} catch (Exception e) {
//construye un mensaje por error JOptionpane.errror_message
JOptionPane.showMessageDialog(null, "dato ingresado invalido" + "\n"
+ "solo se permite el ingreso de numeros enteros" + "\n"
+ "y el dato :" + datoIngresado + "\n"
+ "no es un numero",
"dato de entrada invalido",
JOptionPane.ERROR_MESSAGE);
return false;
}
}//cierra el metodo validarDatoEsNumerico

/*
* metodo utilizado para solicitar el numero de año necesario para
* determinar si es bisiesto solo se usa para el mes de febrero
* @return int //retorna el numero de años solicitado al usuario
*/
private static int solicitarnroAño() {
int nroAñoSolicitado = 0;
String nroAñoIngresado = "";
while (nroAñoSolicitado == 0) {
nroAñoIngresado = JOptionPane.showInputDialog("digite el numero del año"
);
if (validarDatoEsNumerico(nroAñoIngresado) == true) {
//valida qu ela longitud del año ingresado es igual a 4 digitos
if (nroAñoIngresado.length() == 4) {
nroAñoSolicitado = Integer.parseInt(nroAñoIngresado);
} else {
//construye un mensaje por error JOptionpane.errror_message
JOptionPane.showMessageDialog(null,
"numero del mes fuera del rango" + "\n"
+ "solo se permite el ingreso de años de 4 digitos" +
"\n"
+ "y se ha ingresad el numero :" + nroAñoIngresado + "
\n"
+ "verifique e intente nuevamente",
"mensaje de ERROR : entrada invalida",
JOptionPane.ERROR_MESSAGE);
nroAñoSolicitado = 0;//asigna cero nuevamente para que se repi
ta la solicitud del mes
}
}
}
return nroAñoSolicitado;
}//cierra el metodo solicitarnroAño
/*
* metodo utilizado para determinar el nombre del mes correspondiente
* al numero del mes ingresado
* @param nroMes
* @return string//retorna el nombre del mes
*/
private static String determinarNombreMes(int nroMes) {
String nombreDeMes = "";//variable LOCAL
switch (nroMes) {
case 1:
System.out.println("enero");
nombreDeMes = "enero";
break;
case 2:
System.out.println("febrero");
nombreDeMes = "febrero";
break;
case 3:
System.out.println("marzo");
nombreDeMes = "marzo";
break;
case 4:
System.out.println("abril");
nombreDeMes = "abril";
break;
case 5:
System.out.println("mayo");
nombreDeMes = "mayo";
break;
case 6:
System.out.println("junio");
nombreDeMes = "junio";
break;
case 7:
System.out.println("julio");
nombreDeMes = "julio";
break;
case 8:
System.out.println("agosto");
nombreDeMes = "agosto";
break;
case 9:
System.out.println("septiembre");
nombreDeMes = "septiembre";
break;
case 10:
System.out.println("octubre");
nombreDeMes = "octubre";
break;
case 11:
System.out.println("noviembre");
nombreDeMes = "noviembre";
break;
case 12:
System.out.println("diciembre");
nombreDeMes = "diciembre";
break;
}
return nombreDeMes;
}//cierra el metodo determinarNombreMes
/*
* metod que determina el nr de dias apartir del numero del mes recibido
* y pra febrero se tiene encuenta el numero de año para determinar si es bisi
esto
* @param nroMes
* @param nroAño
* return int //retorna el nro de dias correspondiente al mes
*/
private static int determinarNroDias(int nroMes, int nroAño) {
int nroDiasDelMes = 0;
switch (nroMes) {
//meses con 31 dias
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
nroDiasDelMes = 31;
break;
//meses con 30 dias
case 4:
case 6:
case 9:
case 11:
nroDiasDelMes = 30;
break;
//mes febrero
case 2:
//formula para saber si el año es bisiesto
if ((nroAño % 4 == 0 && nroAño % 100 != 0) || (nroAño % 400 == 0)) {
nroDiasDelMes = 29;
} else//no es una año es bisiesto
{
nroDiasDelMes = 28;
}
break;
default:
JOptionPane.showMessageDialog(null, "el numero de mes ingresado
invalido");
break;
}
//retorna el numero de dias correspondiente al mes ingresado teniendo en
cuenta el año para febrero
return nroDiasDelMes;
}//cierra el metodo determinarNroDias

/*
* muestra la respuesta con el nombre del mes,numero de dias y en el caso
* de febrero muestra el numero de año indicado si es bisiesto
* @param nroAño
* @param nroMes
* @param nombreMes
* @param nroDias
*/
private static void mostrarMensajeRespuesta(int nroAño, int nroMes, String nom
breMes, int nroDias) {
if ((nroMes == febrero) && (nroDias == 29))//febrero en bisiesto
{//respuesta para febrero con año bisiesto
JOptionPane.showMessageDialog(null, "respuesta" + "\n"
+ "el numero mes:" + nroMes + "\n"
+ "corresponde al mes:" + nombreMes + "\n"
+ "y para el año bisiesto:" + nroAño + "\n"
+ "su numero de dias son:" + nroDias);
} else//respuesta para todos los demas meses sin tener en cuenta el año
{
JOptionPane.showMessageDialog(null, "respuesta" + "\n"
+ "el numero de mes " + nroMes + "\n"
+ "corresponde al mes:" + nombreMes + "\n"
+ "su numero de dias son:" + nroDias);
}
}//cierra el metodo mostrarMensajeRespueta
/*
* metodo que permite validar con el usuario si desea consultar otro mes
*/
private static void consultarOtroMes() {
int consultarOtroMes = JOptionPane.showConfirmDialog(null, "desea consul
tar imformacion de otro mes");
if (consultarOtroMes == 0) //selecciono si
{
inicio();
} else {
cerrarAplicacion();
}
}
/*
* metodo utlizado para finalizar la aplicacion
*/
private static void cerrarAplicacion() {
int confirmarSalida = JOptionPane.showConfirmDialog(null, "esta seguro d
e salir");
if (confirmarSalida == 0) //selecciono que si
{
JOptionPane.showMessageDialog(null, "gracias por utilizar nuestro ap
licacion, hasta pronto..........");
System.exit(0);
} else {
inicio();
}//cierra else
}//cierra el metodo cerrarAplicacion
}//cierra la clase....

Potrebbero piacerti anche