Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: KillerNemesis en 07 de Octubre 2014, 22:14
-
Buenas señores si alguien pudiera verificar mi ejercicio se los agradeceria mucho ya que surgio una duda mientras lo probaba...
Porque solo puedo modificar los valores de edad y casado pero al intentar modificar cualquier otro como apellidos obtengo un mensaje "Error:cannot find symbol- variable Lopez" si me pudieran decir que es lo que estoy haciendo mal o explicarme por que sucede esto.
Gracias
Saludos!
/* Ejercicio-CU00632-aprendiendoaprogramar.com*/
//Autor KillerNemesis
public class Medico{
String nombre;
String apellidos;
int edad;
boolean casado;
String numeroDocumentoIdentidad;
String especialidad;
//CONSTRUCTOR
public Medico () {
nombre = "Desconocido";
apellidos = "Desconocidos";
edad = 30;
casado = false;
numeroDocumentoIdentidad = "Desconocido";
especialidad = "Desconocida";
}
//METODOS
public void setNombre (String valorNombre){
nombre = valorNombre;
System.out.println("Ha cambiado el nombre del medico a: " + nombre);
}
public void setApellidos(String valorApellidos){
apellidos = valorApellidos;
System.out.println("Ha cambiado los apellidos del medico a " + apellidos);
}
public void setEdad(int valorEdad){
edad = valorEdad;
System.out.println("Ha cambiado la edad del medico a: " + edad);
}
public void setCasado(boolean valorCasado){
casado = valorCasado;
System.out.println("El estado civil del medico ha cambiado Casado");
}
public void setNumeroDocumentoIdentidad(String valorNumeroDocumentoIdentidad){
numeroDocumentoIdentidad = valorNumeroDocumentoIdentidad;
System.out.println("El numero de identidad del medico ha cambiado a: " + numeroDocumentoIdentidad);
}
public void setEspecialidad(String valorEspecialidad){
especialidad = valorEspecialidad;
System.out.println("La especialidad del medico ha cambiado a " + especialidad);
}
//METODOS para Mostrar el resultado del constructor
public String getNombre(){return nombre;}
public String getApellidos(){return apellidos;}
public int getEdad(){return edad;}
public boolean getCasado(){return casado;}
public String getNumeroDocumentoIdentidad(){return numeroDocumentoIdentidad;}
public String getEspecialidad(){return especialidad;}
}
-
Hola Killer
Tu clase está bien, solo tiene un defecto en el método
public void setCasado(boolean valorCasado)
donde el mensaje
System.out.println("El estado civil del medico ha cambiado Casado");
muestra siempre 'casado' cuando debería mostrar o true o false.
Respecto al error que mencionas. Se soluciona encerrando los String entre comillas dobles, igual que haces en el código para el texto.
Saludos
-
Hola KillerNemesis!
Tu codigo se podría decir que cumple con lo que pide el ejercicio, no obstante en cuanto al diseño, tiene unos cuantos puntos que pueden ser mejorados y otros que deben ser corregidos.
Puntos a corregir:
Lo correcto al declarar una variable es antes de definir su tipo de acceso, esto lo entenderás mas adelante conforme avances en el curso (todo a su tiempo) por ahora quedate con la idea de que todas las variables deben de ser declaradas antecedidas por la palabra clave (Controladora de acceso) private. Ejemps:
private String nombre; private int edad; private... y asi sucesivamente.
Otra cosa que no es muy correcta que digamos, es inicializar variables con valores diferentes a su valor por defecto (a menos que no sea un caso especial). Tu has asignado como valor inicial para la variable edad "30" (edad = 30;) cuando lo correcto seria asignar su valor por defecto "0" (edad = 0), cada variable de tipo primitivo tiene un valor por defecto diferente según su tipo. int = 0; boolean = false; double = 0.0 por citarte solo algunos.
Punto a mejorar: Tus mensajes mostrados no son malos, pero si se pueden mejorar, por ejemplo mira este metodo de tu clase el cual eh editado. public void setEdad(int valorEdad){
edad = valorEdad;
System.out.println("Ha cambiado la edad del medico " + nombre + " " + apellidos + ", La nueva edad es " + edad + " años.");
}
La idea es ser mas explicito, y a su vez practicar con lo aprendido en esta entrega como lo es usar el operador "+" para concatenar cadenas.
Porque solo puedo modificar los valores de edad y casado pero al intentar modificar cualquier otro como apellidos obtengo un mensaje "Error:cannot find symbol- variable Lopez" si me pudieran decir que es lo que estoy haciendo mal o explicarme por que sucede esto
En vez de tratar de pasarle como parámetro (Lopez) intenta pasarle ("Lopez") osea, que lo que escribas este dentro de las comillas pertenecientes a un String ;)
Nota: Entre los puntos a corregir sumemos la observacional de toni_apr sobre el metodo "public void setCasado(boolean valorCasado)" el cual pase por alto ;D
Saludos!
-
Gracias por su pronta respuesta,me ayudaron mucho y resolvieron mis dudas al 100!
por lo cual ya modifique parte del codigo con respeto a la observacion Tu clase está bien, solo tiene un defecto en el método
public void setCasado(boolean valorCasado)
donde el mensaje
System.out.println("El estado civil del medico ha cambiado Casado");
muestra siempre 'casado' cuando debería mostrar o true o false.
y me ayudo mucho saber ha cerca de como poder mejorar y complementar estos aspectos
Otra cosa que no es muy correcta que digamos, es inicializar variables con valores diferentes a su valor por defecto (a menos que no sea un caso especial). Tu has asignado como valor inicial para la variable edad "30" (edad = 30;) cuando lo correcto seria asignar su valor por defecto "0" (edad = 0), cada variable de tipo primitivo tiene un valor por defecto diferente según su tipo. int = 0; boolean = false; double = 0.0 por citarte solo algunos.
Punto a mejorar: Tus mensajes mostrados no son malos, pero si se pueden mejorar, por ejemplo mira este metodo de tu clase el cual eh editado.
Saludos! ;D ;)