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 に各タイプの動物の数を格納する必要があることに気付きました。

を動物にマッピングするという概念は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
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 に答える
0

特定の動物のIDを取得するには、これを試してください:

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

マップの名前を次のように変更することを検討してください。aminals

于 2012-12-18T19:27:24.273 に答える