坚持创建 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 区分大小写。 SetValuesetValue 是两个不同的名称。 啊,我的错误,我觉得自己很愚蠢....我是 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 方法创建的类中获取数据

Java面向对象_封装思想——构造器和setter方法选用

Python如何获取用property.setter包装的方法的__qualname__

GroovyGroovy 方法调用 ( Java 类成员及 setter 和 getter 方法设置 | Groovy 类自动生成成员的 getter 和 setter 方法 )

没有为类型列表的JAX B对象生成Setter方法

使用Setter方法填充大量参数