当前位置: 首页 > 知识库问答 >
问题:

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

解鸿运
2023-03-14

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

方法访问数组属性中的每个属性对象,并对属性租金求和并返回总金额。报税表:总租金

这是我的密码:

public double totalRent()
{

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

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

这是正确的吗?它一直说没有使用total变量,所以我不确定我是否做对了。

共有2个答案

厉坚
2023-03-14

好的,每次迭代都要重新创建相同的总变量。总计应该在循环外初始化,这样它就不会超出范围。

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

此外,您正在调用函数而不是返回returntotalrent()只需再次调用该函数。您应该返回变量。(本例中为总计)

大概是这样的:

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

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

宣高朗
2023-03-14

您对代码的逻辑/理解有点不正确,让我们尝试修复它:

public double totalRent() {

    int total = 0;

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

        total += (property[index]).getRent(); //assuming the getter here
    }

    return total;
}

这里的第一个问题是,您返回了对方法本身的调用,从而创建了一个递归,并且是一个无限的递归,因为您没有退出条件。

您想要返回的是值,而不是函数本身。这个函数定义了你做某事的方式,逻辑算法。

如您所述,您的IDE试图警告您,您没有使用all的值。这是因为在它的范围内(你可以用谷歌搜索教程和文档,或者去这里),你从来没有使用过它,所以它是无用的。

解决方案是,在循环的之外声明变量,以便它在范围内并可以返回。在for循环的中,逐步求和所有值,然后返回。

您还会注意到我添加了。getRent()位于对数组中每个元素的调用旁边。这是因为不能直接用对对象求和,需要对每个对象的正确字段求和。如果字段在属性类中声明为public,则可以直接获取该字段,也可以使用getter(如我所做的),即专门访问对象并返回值的方法。

您可以通过学习封装的基本原理,或者直接从这里的oracle教程中了解更多关于getters的信息,以及它们为什么有用。

当然,正如一些评论所建议的,还有其他方法可以对数组中的所有值求和,但是,由于这个问题是专门针对您可能犯的错误的,所以这就足够学习了。

 类似资料:
  • Foo Corporation需要一个程序来计算每小时员工的工资。 美国劳工部要求员工一周工作超过40小时,可以获得1.5小时的报酬。 例如,如果员工工作45小时,他们将获得5小时的加班时间,是基本工资的1.5倍。 马萨诸塞州要求小时工的工资至少为每小时8.00美元。 Foo Corp要求员工每周工作时间不超过60小时。 员工每小时最多可领取40小时的工资(工作小时数)×(基本工资)。每超过40小

  • 我需要获取一个文件对象(不是流)来传递给库。我得到的是“URI不是分层的”。我见过一些解决方案,但它们要么效率很低,要么使用外部库。 File myFile=新文件(MyClass.class.getClassLoader()。getResource(目录)。toURI()) 顺便说一下,我需要传递到的对象 Lucene FSDirectory。打开(myFile) 有什么想法吗?

  • 问题内容: 所以,我不确定那是什么。如果在 ModuleA中 ,我有: 在 ModuleB中 ,我有: 在主程序中,我有: 因此,当我运行主程序时,我想我将创建两个猫鼬“实例”;一个连接到pathA,一个连接到pathB,对吗? 另外,在模块B中,在我连接到pathB之前,它是连接到pathA还是什么都没有? 谢谢。 问题答案: 我刚刚对最新的节点V0.4.6做了一些测试。我确认了以下内容: 从“

  • 我有一个结构,必须扩展到64K,以完美地适合嵌入式项目,使它填补一个闪存块。因此有一个#define,它使用sizeof()将结构中的元素相加,并确定末端的pad[]需要多大才能使总大小达到64K。 例如, 这已经工作了很长一段时间,直到突然间,我们在某些构建配置中根本不需要pad,因为它已经完全是64K了。这会导致代码失败,因为我们的编译器(不是GCC)不允许pad[0]。我尝试了各种方法来创建

  • 我有一个结构,必须垫出来64K,以完美地适应一个嵌入式项目,所以它填充了一个闪存块。所以有一个,它使用将结构中的元素相加,并确定末尾的需要多大才能使总大小64K。 例如: 这在很长一段时间内都非常有效,直到突然我们在某些构建配置中根本不需要pad,因为它已经精确到64k了。这会导致代码失败,因为我们的编译器(不是GCC)不允许。 我尝试了各种方法来创建一个预处理器值,当检测到该值时,我可以在语句中