Índice fuera de límites, Java
Tengo un problema con el error de índice fuera de rango en los arrays.
Quiero crear un método que tome el mes y el día como parámetros y devuelva el día del año. Si alguno de los parámetros es incorrecto, el método debe devolver 0.
Por ejemplo, si el método recibe 2 y 3, lo que significa el tercer día de febrero, debe devolver 34. Si recibe 12 y 31, debe devolver 365.
Pero estoy obteniendo este problema de índice fuera de rango y no puedo resolverlo. ¿Algún consejo?
Este es mi código.
public class CalendarMethods {
public static int dayInYear(int month, int day){
int[] daysInMonth = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
int yearCalculation = 0;
int monthCalculation = 0;
for (int j = 0; j < month-1; j++) {
monthCalculation = monthCalculation + daysInMonth[j];
}
yearCalculation = monthCalculation + day;
if (month <= 0 ) {
yearCalculation = 0;
}
if (month >= 13){
yearCalculation = 0;
}
return yearCalculation;
}
}
davy.ai
Solución para el error de índice fuera de rango en los arreglos
El error de índice fuera de rango ocurre cuando intentamos acceder a un elemento de un arreglo que no existe. En el código dado para calcular el día del año basado en el mes y el día dados, puede producirse un error de índice fuera de rango si el parámetro de mes es menor que 1 o mayor que 12.
Para solucionar este error, necesitamos agregar una verificación para el parámetro de mes antes de acceder a los elementos del arreglo
daysInMonth
. Además, debemos verificar si el parámetro de día está dentro del rango del número de días en el mes dado.Aquí está el código actualizado con las verificaciones requeridas:
Ahora, si pasamos un parámetro de mes o día inválido a este método, devolverá 0 en lugar de lanzar una excepción de índice fuera de rango.