Hola!
Aquí parece que tienes un problema: i <= fin dentro del método private int diasLlovidosEnRango( int inicio, int fin )
private int diasLlovidosEnRango( int inicio, int fin ){
int total = 0;
for( int i = inicio; i <= fin; i++ ) {
if ( dias[i] ) {
total++;
}
}
return total;
}
Los índices del array de días van de 0 a 364, si tú haces una llamada como cuatrimestres[2] = diasLlovidosEnRango(244 , 365);
al pasar el 365 no estás dentro de los índices del array y te tira un error.
Tienes que pensar si estos índices:
cuatrimestres[0] = diasLlovidosEnRango(1 , 121);
cuatrimestres[1] = diasLlovidosEnRango(121 , 243);
cuatrimestres[2] = diasLlovidosEnRango(244 , 365);
Debes cambiarlos
cuatrimestres[0] = diasLlovidosEnRango(0 , 120);
cuatrimestres[1] = diasLlovidosEnRango(121 , 242);
cuatrimestres[2] = diasLlovidosEnRango(243 , 364);
Habría que revisar todos los índices y hacer pruebas.
Saludos!