Poner condiciones a los getter y setter en una clase

publicado por: Anonymous

Estoy aprendiendo a crear clases y no entiendo como hacer para que al imprimir los objetos de la clase Cliente me aparezcan solo:

  • mayores de edad y menores de 120
  • Emails que contengan el char ” @ ”

Tal y como esta ahora me aparecen los datos tal cual los introduzca y me gustaria que se hicieran las modificaciones que introduci en los metodos get/set correspondientes, ya llevo un buen rato intentando sacarlos y no lo consigo.

Gracias por adelantado.

public class Mio2{

public static void main(String[] args)
{

    Cliente c1 = new Cliente();
    Cliente c2 = new Cliente();

    c1.setNombre("Sergio");
    c1.setEdad(15);
    c1.setEmail("[email protected]");
    c1.setOfertas(true);

    c2.setEmail("almaHijo");
    c2.setEdad(154);
    c2.setNombre("Purrian");
    c2.setOfertas(false);

    System.out.println(c1.toString());
    System.out.println(c2.toString());

}

}



package pkg79.mio2;

public class Cliente{

private String nombre;
private int edad;
private String email;
private boolean ofertas;

public Cliente()
{
}

public Cliente(String nombre, int edad, String email, boolean ofertas)
{
    this.nombre = nombre;
    this.edad = edad;
    this.email = email;
    this.ofertas = ofertas;
}

public boolean isOfertas()
{
    return ofertas;
}

public void setOfertas(boolean ofertas)
{
    this.ofertas = ofertas;
}

public boolean mayorEdad()
{
    return edad >= 18;
}

public String getNombre()
{
    return nombre;
}

public void setNombre(String nome)
{
    this.nombre = nome;
}

public int getEdad()
{
    return edad;
}

public void setEdad(int idade)
{
    if (this.edad > 120)
    {
        this.edad = 120;
    } else
    {
        this.edad = edad;
    }
}

public String getEmail()
{
    if (email.contains("@"))
    {
        return email;
    } else
    {
        return "No hay email";
    }
}

public void setEmail(String email)
{
    this.email = email;
}

@Override
public String toString()
{
    return "Cliente{" + "nombre=" + nombre + ", edad=" + edad + ", email=" + email + ", ofertas=" + ofertas + '}';
}

}

solución

El problema es que no estas llamando a los getters que ya definistes en tu ToString(). Solo tienes que cambiar el nombre de la variable por su función de getter.

@Override
public String toString()
{
    return "Cliente{" + "nombre=" + nombre + ", edad=" + this.getEdad() + ", email=" + this.getEmail() + ", ofertas=" + ofertas + '}';
}
Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *