Foros aprenderaprogramar.com
Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: xBag en 18 de Octubre 2014, 04:31
-
Hola, el ejercicio dice así:
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.
-
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 (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
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.
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
-
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.
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");
}
-
Hola Papipanchi, yo el código lo veo equivalente, es decir, que está bien. Salu2