Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: Thieba en 28 de Agosto 2014, 03:22

Título: CU00633B tutorial iniciación java
Publicado 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

Código: [Seleccionar]
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

Título: Re:CU00633B
Publicado por: javi in the sky en 28 de Agosto 2014, 09:39
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:

Código: [Seleccionar]
    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
Título: Re:CU00633B
Publicado por: Thieba en 28 de Agosto 2014, 21:06
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,

Código: [Seleccionar]
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
Título: Re:CU00633B
Publicado por: BelCrow en 29 de Agosto 2014, 00:57
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....