Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: Thieba en 28 de Agosto 2014, 03:22
-
hola buenas noches,
quisiera que alguien me corrige este ejercicio por favor para ver si lo he hecho bien o no.
el código me funciona pero si la edad es un numero múltiplo de 5 en vez de ser 0 los años que faltan para que el medico tenga una edad múltiplo de 5 el resultado sera 5 (El médico de nombre david con especialidad quirofano tendrá una edad múltiplo de 5 dentro de 5 años).
me explico:
por ejemplo si el medico tiene 25 años
pues
calculoParaMultiploEdad = (múltiplo - (edad % múltiplo))
calculoParaMultiploEdad = (5 - (25 % 5))
calculoParaMultiploEdad =5
no se podría poner por ejemplo un metodo que determina lo siguiente ?:
if edad % multiplo = 0
System.out.println (" El medico tiene una edad multiplo de 5 ")
lo he intentado pero hubo problemas de compilación
gracias por su atención
public class Medico
{//declaracion de los atributos
String nombre;
String apellidos;
int edad;
boolean casado;
String numeroDocumentoIdentidad;
String especialidad;
int calculoParaMultiploEdad;
//constructor
public Medico()
{//inicializacion
nombre = " ";
apellidos = " ";
edad = -99;
casado = false;
numeroDocumentoIdentidad = " ";
especialidad = " ";
calculoParaMultiploEdad = -1;
}//cierre del constructor
//metodo para establecer el nombre del medico
public void setNombre (String valorNombre)
{nombre=valorNombre;}//cierre del metodo
//metodo para establecer los apellidos
public void setApellidos (String valorApellidos)
{apellidos=valorApellidos;}//cierre del metodo
//metodo para establecer la edad
public void setEdad (int valorEdad)
{edad=valorEdad;}//cierre del metodo
//metodo para si el objeto medico esta casado o no
public void setCasado (boolean valorCasado)
{casado=valorCasado;}//cierre del metodo
//metodos para establecer el DNI
public void setNumeroDocumentoIdentidad (String valorNumeroDocumentoIdentidad)
{numeroDocumentoIdentidad= valorNumeroDocumentoIdentidad;}//cierre del metodo
//metodo para establecer la especialidad del objeto medico
public void setEspecialidad (String valorEspecialidad)
{especialidad = valorEspecialidad;}
public void setCalculoParaMultiploEdad ()
{calculoParaMultiploEdad = (5 - (edad % 5));
System.out.println ("El médico de nombre " + nombre + " con especialidad " + especialidad + " tendrá una edad múltiplo de 5 dentro de " + calculoParaMultiploEdad + " años");}//cierre del metodo
//metodo para obtener el nombre
public String getNombre ()
{return nombre;}//cierre del metodo
//metodo para obtener los apellidos del medico
public String getApellidos ()
{return apellidos;}//cierre del metodo
//metodo para obtener la edad del medico
public int getEdad ()
{return edad;}//cierre del metodo
//metodo para obtener si el medico esta casado o no
public boolean getCasado ()
{return casado;}//cierre del metodo
//metodo para el DNI del objeto medico
public String getNumeroDocumentoIdentidad ()
{return numeroDocumentoIdentidad;}//cierre del metodo
//metodo para obtener la especialidad del objeto medico
public String getEspecialidad ()
{return especialidad;}//cierre del metodo
}//cierre de la clase
-
Hola, int calculoParaMultiploEdad; no debes declararlo como atributo, sino dentro del método donde lo vas a usar, ya que no es una información que deba llevar un médico y además es algo que se calcula a partir de otro dato (la edad), tener ambos como atributos sería redundante.
El nombre del método setCalculoParaMultiploEdad no es correcto. get y set sólo se usan para recuperar y establecer atributos. El método debe tener otro nombre como determinarTiempoParaMultiploCinco...
Lo que comentas sobre que si la edad es múltiplo de 5 es cierto y lo puedes resolver simplemente con un if, aquí tienes un ejemplo de cómo hacerlo:
public void determinarTiempoParaMultiploCinco ()
{int calculoParaMultiploEdad;
calculoParaMultiploEdad = (5 - (edad % 5));
if(calculoParaMultiploEdad ==5) {System.out.println ("El médico de nombre " + nombre + " con especialidad " + especialidad + " tiene edad multiplo de 5"); }
else{
System.out.println ("El médico de nombre " + nombre + " con especialidad " + especialidad + " tendrá una edad múltiplo de 5 dentro de " + calculoParaMultiploEdad + " años");}
}//cierre del metodo
Saludos
-
gracias Javi,
la verdad es que no entendi bien este metodo,pero ahora sí que me parece que lo he entendido un poco mejor
a continuacion dejo el codigo corregido,
public class Medico
{//declaracion de los atributos
String nombre;
String apellidos;
int edad;
boolean casado;
String numeroDocumentoIdentidad;
String especialidad;
//constructor
public Medico()
{//inicializacion
nombre = " ";
apellidos = " ";
edad = -99;
casado = false;
numeroDocumentoIdentidad = " ";
especialidad = " ";
}//cierre del constructor
//metodo para establecer el nombre del medico
public void setNombre (String valorNombre)
{nombre=valorNombre;}//cierre del metodo
//metodo para establecer los apellidos
public void setApellidos (String valorApellidos)
{apellidos=valorApellidos;}//cierre del metodo
//metodo para establecer la edad
public void setEdad (int valorEdad)
{edad=valorEdad;}//cierre del metodo
//metodo para si el objeto medico esta casado o no
public void setCasado (boolean valorCasado)
{casado=valorCasado;}//cierre del metodo
//metodos para establecer el DNI
public void setNumeroDocumentoIdentidad (String valorNumeroDocumentoIdentidad)
{numeroDocumentoIdentidad= valorNumeroDocumentoIdentidad;}//cierre del metodo
//metodo para establecer la especialidad del objeto medico
public void setEspecialidad (String valorEspecialidad)
{especialidad = valorEspecialidad;}
public void determinarTiempoParaMultiploCinco ()
{int calculoParaMultiploEdad;
calculoParaMultiploEdad = (5 - (edad % 5));
if(calculoParaMultiploEdad ==5) {System.out.println ("El médico de nombre " + nombre + " con especialidad " + especialidad + " tiene edad multiplo de 5"); }
else{
System.out.println ("El médico de nombre " + nombre + " con especialidad " + especialidad + " tendrá una edad múltiplo de 5 dentro de " + calculoParaMultiploEdad + " años");}
}//cierre del metodo
public String getNombre ()
{return nombre;}//cierre del metodo
//metodo para obtener los apellidos del medico
public String getApellidos ()
{return apellidos;}//cierre del metodo
//metodo para obtener la edad del medico
public int getEdad ()
{return edad;}//cierre del metodo
//metodo para obtener si el medico esta casado o no
public boolean getCasado ()
{return casado;}//cierre del metodo
//metodo para el DNI del objeto medico
public String getNumeroDocumentoIdentidad ()
{return numeroDocumentoIdentidad;}//cierre del metodo
//metodo para obtener la especialidad del objeto medico
public String getEspecialidad ()
{return especialidad;}//cierre del metodo
}//cierre de la clase
-
ahora si que el código esta mejor (en mi opinión), al agregarle el if lo perfeccionaste un poco, pero en teoría no debiste usarlo ya que no lo veras hasta el ejercicio CU00636B, osea que sin el if estaría perfecto igual....