Java Getter和setter问题
我在这里是新来的,在Java也是新来的。我有一个Java作业,问题是: 该类应具有以下方法:Java Getter和setter问题,java,return,setter,getter,Java,Return,Setter,Getter,我在这里是新来的,在Java也是新来的。我有一个Java作业,问题是: 该类应具有以下方法: 一个没有参数的构造函数,它将名称初始化为“未知”,将尿素和蛋白质水平初始化为0.0,将bleedIgHistory值初始化为false 一个构造函数,它接收名称和出血历史的参数,并将尿素水平和蛋白质水平初始化为0.0 所有实例变量的getter 所有实例变量的setter,以及 以下: 名称不能为空 尿素水平必须介于0和10之间(含0和10) 蛋白质水平必须介于0和150之间(含0和150) 如果传
- 名称不能为空
- 尿素水平必须介于0和10之间(含0和10)
- 蛋白质水平必须介于0和150之间(含0和150)
public class Patient {
private String name;
private boolean bleedingHistory = true;
private double ureaLevel;
private double proLevel;
因此,我的问题是,如果输入值不正确,如何返回到上面的实例变量。这很简单,只要确保setter中有验证输入的if语句即可。如果验证失败,则根本不更改变量;相反,抛出一个IllegalArgumentException,让调用方知道名称没有更改。(信用证:@ADTC) 例如,下面是患者姓名的设置器:
public void setName(String newName) throws IllegalArgumentException
{
if(newName != null && !newName.isEmpty())
{
this.name = newName;
}
else
{
throw new IllegalArgumentException();
}
}
if语句的计算结果是:“如果newName
为非null
,和newName
为非空,那么我们将用newName
替换此.name
。否则,我们将抛出新的IllegalArgumentException()
”
请注意,如果if语句的计算结果为true
,变量name
将替换为newName
,但是,如果它的计算结果为false
,我们将抛出IllegalArgumentException
。如果要在代码中调用此方法,则应在try-catch语句中调用它,如下所示:
try
{
setName("John Doe");
}
catch(IllegalArgumentException e)
{
//Name was not changed. Either it was null, or it was empty.
}
首先,您需要在构造函数之外声明字段,否则它们只对构造函数可见。首先,这些字段不是实例变量,需要在类级别定义实例变量。再看一看,如果传递给getter的值无效,您不应该以任何方式修改实例字段,因此不应该有问题……哦,对不起,发布了错误的部分。@MadProgrammer,那么您的意思是getter部分我不需要返回任何内容?实际上,当验证失败时,setter应该抛出,以便调用方可以知道验证状态。否则,程序将在假设值已设置的情况下继续运行,而实际上该值尚未设置。@ADTC Great point!我会看看我是否可以将其输入我的答案如果你想得到所有OCD,那么你也可以检查传入的参数是否与类变量中的参数不匹配。如果是一样的,就不要改变它。一些事情,比如……&&n如果(newName!=null&&!newName.isEmpty()&&&!newName.equals(name)){@JacquesRamsden你是对的,这可能也是我也会做的,但他的作业只是检查它是否为空,所以我只放了这么多。@Mitch Talmake 100%同意。:D