我需要创建一个带有签名 public double totalRent()
此方法访问数组 properties
中的每个 Property
对象,并对特性租金求和并返回总金额。
返回:总租金
这是我的代码:
public double totalRent()
{
for(int index = 0; index < property.length; index++)
{
int total =+ property[index];
}
return totalRent();
}
这是正确的吗?它一直说未使用总变量,所以我不确定我做得是否正确。
最佳答案
您对代码的逻辑/理解有点偏差,让我们尝试修复它:
public double totalRent() {
int total = 0;
for(int index = 0; index < property.length; index++){
total += (property[index]).getRent(); //assuming the getter here
}
return total;
}
这里的第一个问题是您返回了对方法本身的调用,从而创建了 recursion ,而且是无限的,因为你没有 exit condition .
您想要返回的是值,而不是函数本身。 该函数定义了你如何做某事,即逻辑算法。
正如您所说,您的 IDE
试图警告您没有使用 total
的值。这是因为在它的范围内(你可以通过谷歌搜索教程和文档,或者去 here )你从未使用过它,所以它毫无用处。
解决方案是,您在for循环
的外部声明变量,使其位于内部范围并可以返回。
在for 循环
内,您逐渐对所有值求和,然后返回。
您还会注意到我在对数组每个元素的调用旁边添加了 .getRent()
。
这是因为您无法直接使用 +
对对象求和,您需要对每个对象的正确字段求和。如果该字段在 Property 类
中声明为 public
,则可以直接获取该字段,也可以使用 getter
(就像我所做的那样),
即专门访问并返回
对象值的方法。
通过学习 encapsulation 的基本原则,您可以了解有关 getter
的更多信息以及它们为何有用。 ,或者直接来自oracle教程here .
当然,正如一些评论所建议的,有 other ways对数组中的所有值求和,但是由于这个问题专门针对您可能犯的错误,因此这足以学习。
关于java - 需要创建一个数组方法,但不确定我是否做对了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40010785/