Autor Tema: Ejercicio CU00632B Imprimir por consola en Java (SYSTEM.OUT).  (Leído 4035 veces)

KillerNemesis

  • Sin experiencia
  • *
  • Mensajes: 25
    • Ver Perfil
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!


Código: [Seleccionar]
/* 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;}
}
« Última modificación: 08 de Octubre 2014, 08:14 por Alex Rodríguez »

toni_apr

  • Avanzado
  • ****
  • Mensajes: 497
  • Curiosidad, es uno de los pilares del Conocimiento
    • Ver Perfil
Re:Ejercicio-CU00632-Imprimir por consola en Java (SYSTEM.OUT).
« Respuesta #1 en: 07 de Octubre 2014, 22:54 »
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

Jorge lopez

  • Sniper
  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 248
  • @SniperOfElite
    • Ver Perfil
Re:Ejercicio-CU00632-Imprimir por consola en Java (SYSTEM.OUT).
« Respuesta #2 en: 07 de Octubre 2014, 23:33 »
 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.
Código: [Seleccionar]
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.

Citar
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!
« Última modificación: 07 de Octubre 2014, 23:39 por Sniper »
while(estesVivo)
{
  aprende();
  ayuda();
  enseña();
}
if(mueres){teRecordaran();}

KillerNemesis

  • Sin experiencia
  • *
  • Mensajes: 25
    • Ver Perfil
Re:Ejercicio CU00632B Imprimir por consola en Java (SYSTEM.OUT).
« Respuesta #3 en: 08 de Octubre 2014, 08:31 »
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
Citar
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
Citar
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 ;)
« Última modificación: 08 de Octubre 2014, 08:34 por KillerNemesis »

 

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