Autor Tema: ayuda por favor con un ejercicio para java  (Leído 255 veces)

patricio1

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 6
    • Ver Perfil
ayuda por favor con un ejercicio para java
« en: 03 de Julio 2021, 04:44 »
Hola estimado(a), ojalá me puedan ayudar con lo siguiente:
tengo que crear un metodo indiceMasaCorporal el cual retorna el IMC de un paciente para un mes X.

Pero para cada paciente se le registra rut, nombre, edad, sexo y peso mensual(array con los pesos mensuales de año) y el array que almacena el peso mensual se genera de forma aleatoria con números enteros rango entre 70 y 250

yo cree el array del peso mensual el cual me retorna los meses del 1 al 12 y números aleatorios entre el rango.

Código: [Seleccionar]
private int[] pesoMensual;
public Paciente(){
this.pesoMensual = new int[12];
for(int i=0; i < pesoMensual.length; i++){
this.pesoMensual[i] = (int) (Match.ramdom() * (250-70+1)+70) }
}

¿Cómo lo podría realizar para que al momento de que se ingrese algún mes y la altura por pantalla se realize el calculo del IMC tomando en cuenta lo anterior????

Ojalá me puedan ayudar con esto. Saludos.
« Última modificación: 04 de Julio 2021, 20:01 por Alex Rodríguez »

flyboy

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 3
    • Ver Perfil
Re: ayuda por favor con un ejercicio para java
« Respuesta #1 en: 03 de Julio 2021, 07:54 »
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í:

Código: [Seleccionar]
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.
« Última modificación: 04 de Julio 2021, 20:01 por Alex Rodríguez »

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 680
    • Ver Perfil
Re: ayuda por favor con un ejercicio para java
« Respuesta #2 en: 03 de Julio 2021, 12:14 »
Hace un par de meses tratamos este mismo ejercicio en otro tema.

Puede que la solución ahí propuesta te sirva.
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

patricio1

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 6
    • Ver Perfil
Re: ayuda por favor con un ejercicio para java
« Respuesta #3 en: 06 de Julio 2021, 01:58 »
gracias por la ayuda me sirvieron mucho las respuestas.
saludos.

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".