Autor Tema: determinar si un numero es multiplo de 5 java ENTEROS. (CU00633B)  (Leído 22261 veces)

aleexx1724

  • Principiante
  • **
  • Mensajes: 73
  • Ayuda con Java
    • Ver Perfil
Hola este codigo ya lo tenia hecho solo agrege el nuevo metodo calculoParaMultiploEdad
 nose si puedo usar e if y else ene ste caso solo use if porque no savia si era corecto  no puse el else solo porque quiero confirmar que este bien lo que eh hecho saludos y gracias


Código: [Seleccionar]
public class Medico{
    private String nombre;
    private String apellidos;
    private String numeroDocumentoIdentidad;
    private String especialidad;
    private int edad;
    private boolean casado;

    public Medico(){
        nombre="";
        apellidos="";
        numeroDocumentoIdentidad="";
        especialidad="Desconosida";
        edad=0;
        casado= false;
    }
    // Setters    y metodos procedimientos
    public void setNombre(String valorNombre){
        System.out.println("Primer  valor de nombre  es "+ nombre);
        nombre=valorNombre;
        System.out.println("El nuevo valor de nombre ahora es "+ nombre);
    }

    public void setApellidos(String valorApellidos){
        System.out.println("Primer  valor de apellidos  es "+ apellidos);
        apellidos=valorApellidos;
        System.out.println("El nuevo valor de epellidos ahora es "+ apellidos);
    }

    public void setNumeroIdentidad(String valorIdentidad){
        System.out.println("Primer  valor de numeroDecumentoIdentidad  es "+ numeroDocumentoIdentidad);
        numeroDocumentoIdentidad=valorIdentidad;
        System.out.println("El nuevo valor de numeroDocumentoIdentidad ahora es "+numeroDocumentoIdentidad);
    }

    public void setEspecialidad(String valorSpecialidad){
        System.out.println("Primer  valor de especialidad  es "+ especialidad);
        especialidad=valorSpecialidad;
        System.out.println("El nuevo valor de especialidad ahora es "+ especialidad);
    }

    public void setEdad(int valorEdad){
        System.out.println("Primer  valor de edad  es "+ edad);
        edad=valorEdad;
        System.out.println("El nuevo valor de edad ahora es "+ edad);
    }

    private void setCasado(boolean valorCasado){
        System.out.println("Primer  valor de casado  es "+ casado);
        casado=valorCasado;
        System.out.println("El nuevo valor de casado ahora es "+casado);
    }

    public void calculoParaMultiploEdad(){
        int a = getEdad()%5;
        if (getEdad() %5!=5){

            System.out.println("el medico "+ getNombre()+ " Con especialidad "+getEspecialidad()+
                " tendra una edad de multiplo 5 dentro de "+ (5-a) + " anios");
        }

    }
    //Getters   y metodos tipo  funcion
    public String getNombre(){
        return nombre;
    }

    public String getApellidos(){
        return apellidos;
    }

    public String getNumeroIdentidad(){
        return numeroDocumentoIdentidad;
    }

    public String getEspecialidad()   

    {
        return especialidad;
    }

    public int getEdad(){
        return edad;
    }

    public boolean getCasado(){
        return casado;
    }

}
« Última modificación: 11 de Septiembre 2014, 12:50 por César Krall »
megustaria aprender a programar en java tengo pocotiempo con esto de la programacion pero me gusta  mucho ,estoy buscando amig@s que  tambien esten aprendiendo o que sepan y puedan enseñar online ,
saludos

toni_apr

  • Avanzado
  • ****
  • Mensajes: 497
  • Curiosidad, es uno de los pilares del Conocimiento
    • Ver Perfil
Re:ENTEROS. (CU00633B)
« Respuesta #1 en: 11 de Septiembre 2014, 09:07 »
Hola aleexx1724
Tu clase Medico está muy bien
Con sus métodos set y get que presentan su mensaje por consola tal como se pide en el ejercicio.

En cuanto el método

calculoParaMultiploEdad()

Quiero comentarte lo siguiente:
Todo lo que has puesto, es válido y funciona, pero:

1º Usar los métodos get y set en la misma clase donde se han creado  no es típico, su uso tiene sentido en otras clases que quieren cambiar o averiguar los atributos de esta clase y no tienen otra forma de hacerlo.
Es esta clase puedes usar el atributo tal cual, ejemplo:
int a = edad % 5;
en lugar de
int a = getEdad()%5;
Repito que tu código es válido, aunque no es usual.
Piensa que si yo quiero hablar con mis compañeros de trabajo que están en la misma habitación, no les llamo por teléfono, les hablo directamente.

2º La condición del if

if (getEdad() %5!=5)

Se cumplirá siempre. ¿Porque digo esto?
Cualquier número al que aplicamos el operador modulo con el valor 5, puede dar 5 valores:
0,1,2,3 y 4.  Compruébalo. Estos valores siempre son distintos de 5, por tanto este if no hace ningún trabajo, si lo quitamos el programa funciona igual.

3º Aquí cito lo que se pide al final del ejercicio

Citar
Compila el código para comprobar que no presenta errores, crea un objeto, usa
sus métodos y comprueba que aparezcan correctamente los mensajes por consola, y que cuando cambias la edad aparece correctamente el tiempo que falta para que la edad sea múltiplo de 5.

En tu código, para saber cuando el médico tendrá una edad múltiplo de 5, has de llamar al método 'calculoParaMultiploEdad()' por tu cuenta.
Pero fíjate que se pide: que cuando cambias la edad, aparezca el mensaje de cuantos años le faltan para tener una edad múltiplo de 5
Esto lo solucionamos llamando al método 'calculoParaMultiploEdad()' desde dentro del método que cambia la edad.

Eso es todo. Saludos.

aleexx1724

  • Principiante
  • **
  • Mensajes: 73
  • Ayuda con Java
    • Ver Perfil
Re:ENTEROS. (CU00633B)
« Respuesta #2 en: 11 de Septiembre 2014, 12:30 »
Ok muchas gracias toni
La verdad no savia si tenia que usar  la variable directo
En el metodo calculoParaMultiploEdad() tambien no estaba muy
Seguro que tuviera que usar if  puesto que fue la unica
Forma que seme ocurrio para poder optener el resultado
El codigo lo ejecute y medava lo que faltava para que
Fuera multiplo de 5 pero lo checare como tu dices


Saludos y muchas gracias
megustaria aprender a programar en java tengo pocotiempo con esto de la programacion pero me gusta  mucho ,estoy buscando amig@s que  tambien esten aprendiendo o que sepan y puedan enseñar online ,
saludos

Beginer

  • Sin experiencia
  • *
  • Mensajes: 9
    • Ver Perfil
    • CENTRAL COOPERATIVA NACIONAL LTDA. "CREDICOOP"
Re:determinar si un numero es multiplo de 5 java ENTEROS. (CU00633B)
« Respuesta #3 en: 12 de Septiembre 2014, 18:19 »
Buenas tardes: He creado la clase de Medico y he definido el constructor y los demás métodos. Definí el método setCalculoParaMultiploEdad (); para el calculo si cuantos años le falta al medico para que su edad sea múltiplo de 5 y le agregué al método setEdad(); para que cuando se cambie la edad del medico se ejecute el método calculoMultiploEdad y lo imprima en pantalla. a continuación los dos métodos definidos.
Código: [Seleccionar]
//Método que devolverá los años que falta para que el medico tenga una edad que sea múltiplo de 5.
    public void setCalculoParaMultiploEdad (){
        int mod = edad % 5;
        int faltaEdad = 5 - mod;
        System.out.println ("El médico de nombre " + nombre + "" + apellido +
        " tendrá una edad multiplo de 5 dentro de " + faltaEdad + " años. ");
    }
// Método para cambio de edad
public void setEdad (int valorEdad){
        edad = valorEdad;
         System.out.println ("Ha cambiado la edad del Medico ahora es: " + edad);
        this.setCalculoParaMultiploEdad();
    }

Quisiera saber si está correcto, gracias. Saludos cordiales.

toni_apr

  • Avanzado
  • ****
  • Mensajes: 497
  • Curiosidad, es uno de los pilares del Conocimiento
    • Ver Perfil
Re:determinar si un numero es multiplo de 5 java ENTEROS. (CU00633B)
« Respuesta #4 en: 13 de Septiembre 2014, 10:29 »
Hola Beginer
Tu código está correcto
Supongo que el resto de la Clase estará igual

Quiero aprovechar para decirte que el prefijo set y el get se usan para los métodos que establecen los valores de los atributos y devuelven estos valores respectivamente
Ponerlo en tu método 'setCalculoParaMultiploEdad '
Se sale de las convenciones en programación

El código funciona igual, pero estas convenciones hacen que el código se pueda entender con un simple vistazo

Yo puedo llamar Señor a un hombre, pero no es convencional llamar Señor a un árbol

Nota:
Cuando quieras enviar un ejercicio para que lo comentemos, empieza un mensaje nuevo indicando de que ejercicio se trata y adjuntando el código como has hecho aquí
Sino puede darse el caso que tu mensaje se quede solitario en la cola de un hilo que damos por terminado.

Saludos

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Re:determinar si un numero es multiplo de 5 java ENTEROS. (CU00633B)
« Respuesta #5 en: 13 de Septiembre 2014, 10:37 »
Hola, amplío lo que ha indicado toni con un par de comentarios adicionales:

- Cuando pegues código de ejercicios pega el código de la clase completa. Así quienes lo revisemos podremos compilarlo y nos será más fácil de revisar que si pegas fragmentos sueltos que no se pueden compilar. En caso de que el código sea muy largo puedes ponerlo como archivo adjunto pulsando en "Opciones adicionales" que aparece en la parte de abajo del editor del foro y adjuntando un archivo.

Aparte de lo comentado por toni sobre el nombre del método, hay otro detalle en el método setEdad que deberías revisar: un método se encarga de una sola cosa. Un método set se encarga de establecer el valor de un atributo, pero tú has añadido esta línea: this.setCalculoParaMultiploEdad();

Esto no es correcto. El proceso normal sería usar setEdad para establecer la edad y luego usar calcularParaMultiploEdad para saber cuánto falta para que la edad del médico sea múltiplo de 5.

Recordar: un método, una tarea.

Saludos!
Responsable de departamento de producción aprenderaprogramar.com

Beginer

  • Sin experiencia
  • *
  • Mensajes: 9
    • Ver Perfil
    • CENTRAL COOPERATIVA NACIONAL LTDA. "CREDICOOP"
Re:determinar si un numero es multiplo de 5 java ENTEROS. (CU00633B)
« Respuesta #6 en: 15 de Septiembre 2014, 15:15 »
Muchas gracias por la observaciones..

Guille

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 15
    • Ver Perfil
Re:determinar si un numero es multiplo de 5 java ENTEROS. (CU00633B)
« Respuesta #7 en: 29 de Septiembre 2014, 15:20 »
Aqui les pongo mi codigo para que le echen un vistazo. ya funcionan pero me dio unos problemas se conversion. el return me lo pedia obligado asi que como no super deshacerme de el return tuve que dejarlo con algo.

me refiero a esta parte

Citar
public int calculoParaMultiploEdad(){
        multiploEdad=edad/5;
        resto= ((5*(multiploEdad+1)-edad));
       System.out.println( "El médico de nombre, " + nombre + ",  edad  " + edad+ ", con especialidad  " + especialidad  + ", tendrá una edad múltiplo de 5 dentro de " + resto + " años. ");
 return resto;

otro detalle es: que si uso  "edad%5"  en lugar de "edad/5 "el resultado final no es el correcto
           
     
   
    }
Código: [Seleccionar]
public class Medico {

    private String nombre, apellidos,Id, especialidad;
    private int edad;
    private boolean casado;
    private int multiploEdad, resto;

    public Medico() {
        nombre= "Perico";
        apellidos = "Ripiao";
        edad= 16;
        casado=false;
        Id="P123";
        especialidad="Dr Corazon";
        multiploEdad=1;
        resto=0;
        // cambio=false; este era para definir un cambio en la especialialidad pero no pude
    }

    //Asignar datos a los objetos

    //Setters
    public void setNombre(String suNombre){

        nombre=suNombre;

    }

    public void setApellidos(String susApellidos){

        apellidos=susApellidos;

    }

    public void setEdad(int suEdad){

        edad=suEdad;

    }

    public void setCasado(boolean udCasado){

        casado=udCasado;

    }

    public void setId(String suId){

        Id=suId;

    }

    public void setEspecialidad(String suEspecialidad){

        System.out.println( "Ha cambiado la especialidad del médico de nombre " + nombre + " La nueva especialidad es " + especialidad);
        System.out.println ("Ha cambiado la especialidad del doctor: " + nombre + " " + apellidos + " De: " +especialidad + "  A: " + suEspecialidad);
        especialidad = suEspecialidad;
    }
    //Getters para sacar informacion

    public String getNombre () {
        return nombre;
    }

    public String getApellidos () {
        return apellidos;
    }

    public int getEdad () {
        return edad;
    }

    public boolean getCasado () {
        return casado;
    }

    public String getId () {
        return Id;
    }

    public String getEspecialidad () {
        return especialidad;

    }

    public int calculoParaMultiploEdad(){
        multiploEdad=edad/5;
        resto= ((5*(multiploEdad+1)-edad));
       System.out.println( "El médico de nombre, " + nombre + ",  edad  " + edad+ ", con especialidad  " + especialidad  + ", tendrá una edad múltiplo de 5 dentro de " + resto + " años. ");
            return resto;
     
   
    }
}
« Última modificación: 29 de Septiembre 2014, 15:31 por Guille »

toni_apr

  • Avanzado
  • ****
  • Mensajes: 497
  • Curiosidad, es uno de los pilares del Conocimiento
    • Ver Perfil
Re:determinar si un numero es multiplo de 5 java ENTEROS. (CU00633B)
« Respuesta #8 en: 29 de Septiembre 2014, 21:22 »
Hola Guille
Tu ejercicio compila sin errores, pero no hace todo lo que se pide en su enunciado

Mira:
Aparte de los atributos que se piden, creas otros que tu necesitas

private int multiploEdad, resto;

Si los necesitas, vale. Pero estas variables no hacía falta que fueran atributos de la clase, podian ser variables internas del método donde los utilizas

public int calculoParaMultiploEdad()
--------------------
Se pide

Citar
Define un constructor asignando unos valores de defecto a los atributos y los métodos para poder establecer y obtener los valores de los atributos.

Asignar los valores por defecto a los atributos de la clase, es esto:
Atributos de tipo String se inicializan con cadena vacía
nombre= "";
Atributos de tipo int, se inicalizan a cero
edad = 0;
Atributos de tipo float,se inicalizan a cero
sujperficie = 0.0f;
(la f obliga al compilador a tomar el valor como float, sino lo tomaría como double)
Atributos de tipo double, se inicalizan a cero
distancia = 0.0;
Atributos de tipo boolean, se inicializan a false
casado = false;

Los métodos set y get están bien excepto el

public void setEspecialidad(String suEspecialidad)

Los métodos set y get, no deberían mostar mensajes por pantalla.
Si en un ejercicio te lo pedimos así, hazlo.
Nuestra intención es que veas que al invocar ese método, el mensaje por pantalla te demuestra que el programa pasa por ese método haciendo todo el trabajo que le hemos codificado en su interior.

Además el mensaje que muestra ahora, confunde. Presenta estos mensajes.
Ha cambiado la especialidad del médico de nombre NOMBRE La nueva especialidad es ANTIGUAESPECIALIDAD
Ha cambiado la especialidad del doctor: NOMBRE APELLIDOS  De: ANTIGUAESPECIALIDAD  A: NUEVAESPECIALIDAD
----

Citar
Define un método de nombre "calculoParaMultiploEdad" que no recibe parámetros y es tipo procedimiento cuyo cometido será el siguiente:

De tipo procedimiento como sabes quiere decir que no devuelve valor.
La signatura del método debería ser:

public void calculoParaMultiploEdad()

Cambiar el valor devuelto (int) por (void)
Así, no estas obligado a poner el return

Finalmente, en este método calculoParaMultiploEdad() haces el cálculo sin usar el operador % (modulo)
Fijate, que casi se te dice como hacerlo en el enunciado del ejercicio.

Mira como lo han resuelto otros compañeros del foro
https://www.aprenderaprogramar.com/foros/index.php?topic=1068.msg5984#msg5984

Además, para cumplir con el ejercicio, deberías llamar al método calculoParaMultiploEdad() desde dentro del método setEdad(int suEdad)
Para que, siempre que cambias la edad del médico, te diga también cuántos años le faltan para que su edad sea múltiplo de 5

Si algo de lo que te decimos no se entiende. Pregunta, e intentaremos responder con detalle
Saludos

Guille

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 15
    • Ver Perfil
Re:determinar si un numero es multiplo de 5 java ENTEROS. (CU00633B)
« Respuesta #9 en: 30 de Septiembre 2014, 02:58 »
Muchas gracias Toni por tomarte el tiempo y echarle un vistazo.

No habia entendido bien lo que mod hacia.

 

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".