我正在学习创建类,但我不明白如何制作它,这样当我打印 Client 类的对象时,它们只会出现:
- 120 岁以上和以下
- 包含字符“@”的电子邮件
因为现在数据在输入时出现在我面前,我希望对我在相应的 get/set 方法中引入的修改进行修改,我一直试图将它们取出很长时间,但我不能.
提前致谢。
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 + '}';
}
}
问题是您没有调用已在 ToString() 中定义的 getter。您只需将变量的名称更改为它的 getter 函数。
方法
get
应该只返回你的类属性的值或它们的副本(或基于它们计算的属性)。必须在构造函数和方法中进行属性检查(非 null、空或具有某些属性或格式)
set
。因此,我认为你的方法
getEmail
是错误的。相反,在构造函数中检查电子邮件格式,如果没有,您可以将其更改为null
,或抛出类型异常IllegalArgumentException
。这样,在您的方法中
toString
,您只需打印字段,检查它们是否不为空,如下所示。为了让它正常工作,你还必须,正如我所说,检查构造函数和设置器中参数的正确性,如果其中一个不符合你认为正确的条件,则抛出适当类型的异常(它是不建议像您所做的那样更改某些值并隐藏错误,除非您不认为这是错误的)。
或者最后一种方法,它可能是这样的。
构造函数看起来像这样(我省略了属性
ofertas
)。