0

好的,所以我有一个方法

public static int getTotalLegCountDog (ArrayList<Dog> dogList)
{

    int temp = 0;
    for (int i = 0; i < dogList.size(); i++)
    {
        temp = dogList.get(i).getNumLegs();
        totalLegsDogs += temp;
    }
    return totalLegsDogs;
}

它将狗的总腿数相加并将它们作为 totalLegsDogs 返回,还有一个是猫的总腿数。

现在我想要一个方法,将返回的 totalLegsDogs 和返回的 totalLegsCats 加在一起。我的尝试如下(它返回 0),任何帮助都会很棒!

public int getTotalLegCount ()
{
    totalLegs = totalLegsDogs + totalLegsCats;
    return totalLegs;
}
4

3 回答 3

0

据我所知,这些方法本身没有任何问题 - 可能您getTotalLegCount在实际数腿之前就已经调用了。

修复 1(首选):getTotalLegCount调用方法。

public int getTotalLegCount (ArrayList<Dog> dogList, ArrayList<Cat> catList) {
  totalLegs = getTotalLegCountDog(dogList) + getTotalLegCountCat;
  return totalLegs;
}

修复 2明确说明要首先调用计腿方法。这是次要的解决方案,因为它需要未来程序员的更多努力(这可能是未来的你!)。

于 2013-10-20T23:34:46.753 回答
0

我认为您没有向我们展示足够多的代码来进行任何故障排除。看起来您必须对狗腿和猫腿进行全局静态计数?我无法弄清楚您的用例,但无论如何,您需要确保在对成员变量执行任何操作之前调用这两种计数方法,否则它们将不会被初始化。例子:

DogCatCounter.getTotalLegDogCount(...);
DogCatCounter.getTotalLegCatCount(...);
new DogCatCounter().getTotalLegCount();

只要没有其他实例DogCatCounter修改您的静态变量,第三行的结果就应该是正确的。换句话说,如果您有多个 实例,那么DogCatCounter对您的计数方法的任何调用都会修改您的全局静态成员。

于 2013-10-20T23:36:17.103 回答
0

没有正确调用方法。问题中的数学是可靠的。问题是方法输出调用。

于 2013-10-20T23:33:45.850 回答