【问题标题】:Stuck on creating a Setter method坚持创建 Setter 方法
【发布时间】: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?

标签: java


【解决方案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)

        【讨论】:

          猜你喜欢
          • 2020-06-07
          • 2011-12-07
          • 1970-01-01
          • 1970-01-01
          • 2019-03-12
          • 1970-01-01
          • 2023-03-07
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多