obviamente que tu solución está mal planificada. Para poder resolver el ejercicio necesitas almacenar en el arreglo de peso mensual el mes y el peso, incluso el mes tiene que ser año y mes. No sé qué versión de JDK uses, pero si es la 16 yo usaría un record:
record Peso(int year, int month, int weight){}
Y luego mi paciente tendría el campo:
private Peso[] pesoMensual;
Después, es cuestión de generar un rango de años y meses, y llenarlos con los valores correspondientes, entonces cuando ingresas el año y mes, ya lo buscas por año y mes.
Otra forma de resolverlo sería usando un Map<LocalDate, Integer> en lugar de un arreglo, de modo que tus valores de fecha te servirían de clave para obtener el peso.
Y la otra forma, más complicada pero que te permite hacerlo exclusivamente con arreglos sería usando dos arreglos, uno para las fechas (usa como referencia el primer día del mes, ejemplo: enero del 2021 sería 1/1/21, y diciembre del 2021 sería 1/12/21) y otro arreglo para los pesos:
private LocalDate[] fechas;
private int[] pesos;
Luego, en el mismo orden que tienes tus meses, tienes tus pesos, lo siguiente es que si ingresas un mes, por ejemplo que un usuario ingrese Enero del 2000, vas a buscar en fechas, así por ejemplo tu método buscar peso sería algo así:
for(int i=0; i<fechas.length; i++){
if(fechas[i].compareTo(primerDiaDelMesIngresado)==0){
return pesos[i];
}
}
Y luego, simplemente tu IMC sería: buscarPeso(primerDiaDelMes) / (estatura * estatura)
Más complicado, pero solamente usas arreglos.
Otra forma también sería con arreglos bi-dimensionales, pero ya tendrías que resolver la diferencia de los tipos de datos, ya que en bidimensional, solamente puedes tener enteros o solamente fechas.