Después de cada grupo de case debes añadir un break, de lo contrario seguirá leyendo los valores posteriores, de forma que todos tus meses tendrán 28 o 29 días.
http://download.oracle.com/javase/tu...ts/switch.html
Curiosamente viene como 2º ejemplo tu obtenerDiasMes().
Edito:
Cita: private int obtenerDiasMes( int mes ) {
return obtenerDiasMes( obtenerMes(mes) );
}
Esto no tiene ningún sentido, creas una recursividad infinita, y además ese método ya existe con los mismos parámetros.
Y no abuses del private en los métodos, si no no podrás llamarlos desde otra clase.