需要创建一个数组方法,但不确定我是否做得对

时间:2016-10-13 01:16:48

标签: java

我需要创建一个带有签名public double totalRent()

的方法

此方法访问数组Property中的每个properties对象,并总结属性租金并返回总金额。 退货:总租金

所以继承我的代码:

public double totalRent()
{

    for(int index = 0; index < property.length; index++)
    {

        int total =+ property[index];
    }
    return totalRent();
} 

这是对的吗?它一直说不使用总变量,所以我不确定我是否做得对。

2 个答案:

答案 0 :(得分:2)

您对代码的逻辑/理解有点偏离,让我们尝试解决它:

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 loop的变量 变量,以便范围内,并且可以回。 for loop内部,您逐步将所有值相加,然后返回。

您还会注意到我在调用数组的每个元素旁边添加了.getRent()。 这是因为你无法直接用+对对象求和,你需要将每个对象的正确字段相加。如果字段在public内声明为Property class,或者使用getter(就像我一样),您可以直接获取该字段, ie。一种专门访问和returns来自对象的值的方法。

您可以通过学习encapsulation的基本原则或直接从oracle教程here了解有关getters及其有用之处的更多信息。

当然,正如一些评论建议的那样,other ways总结了数组中的所有值,但是由于这个问题是关于错误的,你可能已经犯了,这是绰绰有余。

答案 1 :(得分:0)

好吧,您每次迭代都会重新创建相同的总变量。总数应该从循环中初始化,因此它不会超出范围。

另外,你正在使用= +,但我认为你的意思是+ =。 + =用于将后一个数量添加到前一个变量。

此外,您正在调用该函数而不是返回。 return totalRent()只是再次调用该函数。你应该返回变量。 (在这种情况下,总计)

这样的事情:

int total = 0;
for(int index = 0; index < properties.length; index++){
  //do stuff
}
return total;

希望这有帮助,并且编码愉快!