Autor Tema: Java pregunta ejercicio CU00633B operador módulo (mod)  (Leído 3972 veces)

xBag

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 8
    • Ver Perfil
Java pregunta ejercicio CU00633B operador módulo (mod)
« en: 18 de Octubre 2014, 04:31 »
Hola, el ejercicio dice así:

Citar
Define una clase Medico considerando los siguientes atributos de clase: nombre (String), apellidos (String), edad (int), casado (boolean), numeroDocumentoIdentidad (String), especialidad (String). 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. Define un método de nombre “calculoParaMultiploEdad” que no recibe parámetros y es tipo procedimiento cuyo cometido será el siguiente: determinar cuántos años faltan para que la edad del médico sea múltiplo de 5 y mostrar un
mensaje informativo por pantalla. Por ejemplo si el médico tiene 22 años deberá en primer lugar obtener el resto de la división de 22 entre 5, que es 2. Ahora obtendrá los años que faltan para que el médico tenga una edad múltiplo de 5, que serán 5-2 = 3 años. A continuación deberá mostrar un mensaje por consola del tipo: “El médico de nombre … con especialidad … tendrá una edad múltiplo de 5 dentro de … años”. 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.

Creía que iba bien pero, me dice que la variable "EDAD" no está inicializada. No sé si es que en ese método no lo está, pero sí en otro. Estoy un poco perdido, intenté decirle al método que EDAD tomara el valor que había tomado en el "setEdad" más arriba. Pero no supe como. ¿Qué estoy haciendo mal? Ayuda tengo 1 hora trancado no tengo idea de que hacer ya me rendí...

Gracias de antemano.
« Última modificación: 19 de Octubre 2014, 20:49 por Alex Rodríguez »

toni_apr

  • Avanzado
  • ****
  • Mensajes: 497
  • Curiosidad, es uno de los pilares del Conocimiento
    • Ver Perfil
Re:Java pregunta ejercicio CU00633B
« Respuesta #1 en: 18 de Octubre 2014, 22:37 »
Hola xBag

En primer lugar quiero pedirte que leas el siguiente enlace. Te indicará como insertar código en el mensaje para poder compilarlo en nuestra máquina y poder ayudarte con los errores.
https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0

Luego, aunque no es la causa de tu problema, tienes que acostumbrarte a declarar como private los atributos de la clase ejem.
private String Nombre;
Otra cosa, es convención aceptada en java bautizar los atributos (campos o variables) de la clase con nombres que empiezan con minúscula para distinguirlos de las clases que empiezan con mayúscula ejem.
private String nombre;

En cuanto al error
Citar
la variable "EDAD" no está inicializada
quiere decir que antes de usar una variable, además de declararla, debe estar inicializada, (las variables de tipo int suelen inicializarse a cero).
Pero si quieres que esta variable tenga el valor del atributo de mismo nombre en la clase, no declares esta variable aquí, sino que usa el propio atributo edad aquí.
Ejem.
Código: [Seleccionar]
public void calculaParaMultiploEdad() {
int N = Edad % 5;
N = 5 - N;
System.out.println("El médico de nombre " + Nombre + " con especialidad " + Especialidad + " tendra una edad multiplo de 5 dentro de " + N + años");
}
Como ves los otros atributos, Nombre y Especialidad no hay que volver a declararlos. Se declararon en el encabezamiento de la clase, se pueden usar cuando quieras.
Eso si, hay que darles un valor con el método setEdad() ya que el constructor inicializa la  Edad a cero.

Saludos

Papipanchi

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 38
    • Ver Perfil
Re:Java pregunta ejercicio CU00633B operador módulo (mod)
« Respuesta #2 en: 03 de Diciembre 2014, 23:57 »
Hola toni_apr
Estaría bien el código que adjunto.
En caso positivo que ventajas o inconvenientes tendría sobre el que tu has propuesto.
Código: [Seleccionar]
  public void calculoParaMultiploEdad (){
         int resto = edad % 5;
         int n;
         n=5-resto;
        System.out.println("El médicode nombre " + nombre +" con especialidad " + especialidad + " tendrá una edad múltiplo de 5 dentro de " + n + " años");
    }

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2660
    • Ver Perfil
Re:Java pregunta ejercicio CU00633B operador módulo (mod)
« Respuesta #3 en: 06 de Diciembre 2014, 21:22 »
Hola Papipanchi, yo el código lo veo equivalente, es decir, que está bien. Salu2

 

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