坚持创建 Setter 方法
Posted
技术标签:
【中文标题】坚持创建 Setter 方法【英文标题】:Stuck on creating a Setter method 【发布时间】:2017-04-12 21:21:29 【问题描述】:所以目前,我已经设法使用以下代码创建了一个 getter 方法
public int getDivisor()
return this.divisor;
这将返回 2。
我一直在为我的项目创建一个 setter 方法。问题是:为 divisor 编写一个公共 setter 方法,将 divisor 设置为参数的值。它不能为0,真的被困在这个问题上。有人可以帮忙吗?非常感谢。
我现在添加了以下方法
public void setValue(int number)
if (number == 0)
this.divisor = number;
用于设置器消息。
输入消息divisor.SetValue();
后返回错误找不到符号 - 方法 SetValue()。我做错了吗?
【问题讨论】:
嗯,它只是设置一个值,而不是返回一些东西,所以你知道它应该是void
。您需要一个整数作为参数,名称可以是“setValue”,所以setValue(int number)
可以是签名。你想将除数的值设置为这个数字,所以你需要this.divisor = number;
。但是你需要确保数字不是 0,这就是可爱的if(number == 0)
派上用场的地方。
请始终尽最大努力解决您的问题。否则,怎么会有人知道您可能遇到什么问题?
我已经编辑了我的帖子,但仍然出现错误?
Java 区分大小写。 SetValue
和 setValue
是两个不同的名称。
啊,我的错误,我觉得自己很愚蠢....我是 Java 新手。对不起。它没有返回任何错误,但是当我发送消息 divisor.setValue(3);它不会改变值,当我使用 divisor.setValue(0);当它不能为0时它仍然将值更改为0?
【参考方案1】:
setter 方法只是一种将变量的值设置为通过通常为 void 类型的方法传递的参数的值的方法,因为您不返回任何值
public void setValue(int value)
if(value != 0) this.divisor = value;
【讨论】:
value
不能是 0
这个事实怎么办?
抱歉我忘了在这部分添加。
你认为只是默默地忽略错误输入就可以了吗?
虽然 OP 可能不了解错误处理,但值得将其包含在您的答案中,以便获得正确的答案,而不是为 OP 提供快速解决方案。【参考方案2】:
首先,正如 cmets 中指出的那样,您所做的与您想做的相反。我建议你可以在 number
为 0 时抛出一个 IllegalArgumentException,如下所示:
public void setValue(int number)
if(number == 0)
throw new IllegalArgumentException("The value 0 is not valid");
this.divisor = number;
关于调用方法的问题:
除数.SetValue();
正如 cmets 中所指出的,方法签名区分大小写,因此 SetValue 将不起作用。此外,该方法需要一个整数参数,您没有提供任何参数。你应该像这样调用方法:
divisor.setValue(123); //Any integer parameter is fine, just an example
【讨论】:
【参考方案3】:评论页面上的宪兵回答帮助我解决了问题。
public void setValue(int number)
if(number == 0)
this.divisor = number;
【讨论】:
这还是不正确?你的作业说“它不能是 0”,你在这里做什么? ...【参考方案4】:在代码上简单地使用!=
操作符,意思是不等于
只要做:
public void setValue(int number)
if (number != 0)
this.divisor = number;
这将检查给定的值是否不等于0,然后将除数设置为数字。
【讨论】:
【参考方案5】:setValue()
和 SetValue()
是两个不同的东西。名称区分大小写。这就是为什么编译器找不到setValue()
,因为你输入了SetValue()
!
【讨论】:
【参考方案6】:首先,固定方法名,setter 应该包含变量名,类似于 setDivisor()
其次,条件错误,只有当值为零时,您的方法才会赋值。因此它应该是:if(number != 0)
最后,除数是一个变量,如果你在类中设置值,你可以调用方法 setDivisor(newDivisor) 或 this.setDivisor(newDivisor)
【讨论】:
以上是关于坚持创建 Setter 方法的主要内容,如果未能解决你的问题,请参考以下文章
是否可以从为 getter-setter 方法创建的类中获取数据
Python如何获取用property.setter包装的方法的__qualname__
GroovyGroovy 方法调用 ( Java 类成员及 setter 和 getter 方法设置 | Groovy 类自动生成成员的 getter 和 setter 方法 )