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 observacionTu 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 ;)