En el archivo Fecha.java está la definición de la clase principal y consideré oportuno definir métodos privados para la verificación interna de los datos, el problema está en el método privado nameMonth que debería devolver el nombre del mes en función del valor numérico del campo miembro Month, me sale error en la línea al final de la estructura switch donde está la instrucción: "return nombre", el compilador me dice que la variable no está inicializada, como debería inicializar la variable nombre para que el método funcione correctamente?
Archivo Fecha.java
Código
/* Definicion general de la clase Fecha */ public class Fecha { private int year, month, day; public Fecha(int y, int m, int d) { year = (y <= 0) ? 2014 : y; month = verifyMonth(m); day = verifyDay(d); } /* Metodo privado que devuelve el nombre del mes en funcion a su numero */ { String nombre; switch(mes) { case 1: nombre = "Enero"; break; case 2: nombre = "Febrero"; break; case 3: nombre = "Marzo"; break; case 4: nombre = "Abril"; break; case 5: nombre = "Mayo"; break; case 6: nombre = "Junio"; break; case 7: nombre = "Julio"; break; case 8: nombre = "Agosto"; break; case 9: nombre = "Septiembre"; break; case 10: nombre = "Octubre"; break; case 11: nombre = "Noviembre"; break; case 12: nombre = "Diciembre"; break; } return nombre; } /* Metodo privado para saber si un year es bisiesto */ private boolean Bisiesto(int y) { if((y % 4 == 0) && (!(y % 100 == 0) || (y % 400 == 0))) return true; else return false; } /* Metodo privado para verificar si el mes asignado es el correcto */ private int verifyMonth(int mes) { int valor; if(mes <= 0) valor = 1; else if(mes > 12) valor = 12; else valor = mes; return valor; } /* Metodo para verificar si el dia asignado es el correcto */ private int verifyDay(int dia) { int maximo, valor; /* Evaluando el valor de los campos miembro month y year para determinar el maximo valor en dias de cada mes */ switch(month) { case 4: case 6: case 9: case 11: maximo = 30; break; case 2: maximo = (Bisiesto(year)) ? 29 : 28; break; default: maximo = 31; break; } if(dia <= 0) valor = 1; else if(dia > maximo) valor = maximo; else valor = dia; return valor; } /* Metodo para mostrar la fecha */ { return fecha; } }
Archivo PruebaFecha.java
Código
/* Prueba general de la clase Fecha */ import java.util.Scanner; public class PruebaFecha { { Fecha miFecha = new Fecha(2014, 6, 2); } }
De antemano les agradezco cualquier ayuda que puedan darme, saludos y éxitos a todos.