1

我有一个名为的类Animal,它具有以下字段;

String ani_Name;
int animal_maintainance_cost;

我有一堂课叫Maintenance. 和:

  1. 它有一种方法来计算动物园中动物的总动物维护成本。
  2. 它有一种方法可以计算动物园里所有动物的动物维护成本。

我试过的代码:

private Map <Integer,Animal> animal = new HashMap<Integer,Animal>();

// Here, `Integer` is the `animalID `and `Animal `is an object of the class `Animal`
//Then i generated getters and setters, and using the setter method i will be adding all the animals in the Zoo.

1

public int returnAllAnimalMaintenanceCost(Integer animalID){
  int animalMaintenaceCostForGivenAnimalID = ???? // How do i calculate this using `Map <Integer,Animal>`
return animalMaintenaceCostForGivenAnimalID;

}

2

public int returnAllAnimalMaintenanceCost() {
   return ??
}

有人可以帮我计算动物园里所有动物的总维护成本吗?

4

3 回答 3

1

起初我在想“你需要一个 HashMap”,然后我认为你可能不需要一个 HashMap。现在我意识到是的,您可能想要一个 HashMap 来存储每种类型的动物的数量。

我认为将 an 映射animalId到动物的概念有点奇怪,因为我认为每种动物的名称已经是唯一的,为什么需要一个 Id?

我相信这对你有用:我在下面假设动物地图用于将动物映射到计数(每种动物类型有多少)。

private Map<Animal, Integer> animal = new HashMap<Animal, Integer>();

public int returnAllAnimalMaintenanceCost() {
    int sum = 0;
    for (Entry<Animal, Integer> ee : animal.entrySet()) {
        sum += ee.getValue() * ee.getKey().getMaintenanceCost();
    }
    return sum;
}

要查找特定动物的维护成本,您可以输入动物的名称,循环遍历您的 animal.keySet(),找到您正在寻找的特定动物,返回 Animal 类中的维护成本乘以存在该类型的动物数量。

于 2012-12-18T19:21:36.727 回答
0

试试这个来获取特定动物的 id:

public int returnAnimalMaintenanceCost(int animalID) {
    return animal.get(animalID).getCost();
}

您可以考虑将地图重命名为aminals

于 2012-12-18T19:27:24.273 回答
0
public class Constants
{
      public static int ANIMAL_ID = 0;
      public Map <Integer,Animal> animal = new HashMap<Integer,Animal>();
}

动物类

public class Animal
{
      public int id;
      String ani_Name;
      int animal_maintainance_cost;
      public Animal()
      {
            id = ++Constants.Animal_ID;
            constants.put( id, this );
      }
}

维修班

public class Maintenance
{
     public int totalAnimalMaintenanceCostOfAnAnimal(Integer animalID)
     {
         return (Constants.get( animalID )).animal_maintainance_cost;
     }

     public int returnAllAnimalMaintenanceCost() 
     {
         int sum = 0;
          for ( int i = 1; i <= Constants.ANIMAL_ID; i++) 
          {
                sum = sum + (Constants.get( i)).animal_maintainance_cost;
          }
          return sum;
     }
}
于 2012-12-18T19:39:50.683 回答