private static Mammal TryAnimalCreate(string animalType, string animalName, double animalWeight, string animalLivingRegion, string catBreed) { Mammal result = null; switch (animalType) { case "Mouse": result = new Mouse(animalName, animalType, animalWeight, animalLivingRegion); break; case "Zebra": result = new Zebra(animalName, animalType, animalWeight, animalLivingRegion); break; case "Cat": result = new Cat(animalName, animalType, animalWeight, animalLivingRegion, catBreed); break; case "Tiger": result = new Tiger(animalName, animalType, animalWeight, animalLivingRegion); break; } return(result); }
static void Main(string[] args) { int counter = 1; string line = Console.ReadLine(); var animals = new List <Animal>(); int currentAnimal = 0; Animal previousAnimal = new Animal(); while (line != "End") { string[] tokens = line.Split(); if (counter % 2 != 0) { string animalType = tokens[0]; string animalName = tokens[1]; double animalWeight = double.Parse(tokens[2]); string livingRegion = tokens[3]; if (tokens[0].ToLower() != "cat") { Mammal mammal = new Mammal(animalName, animalType, animalWeight, livingRegion); UpdateAnimalList(animals, animalName, mammal); GetAnimal(animals, animalName); previousAnimal = GetAnimal(animals, animalName); currentAnimal++; } else { string breed = tokens.Last(); Cat cat = new Cat(animalName, animalType, animalWeight, livingRegion, breed); UpdateAnimalList(animals, animalName, cat); previousAnimal = GetAnimal(animals, animalName); currentAnimal++; } } else { int foodEaten = int.Parse(tokens[1]); DetermineIfAnimalWillEatFood(previousAnimal, tokens[0], foodEaten); } counter++; line = Console.ReadLine(); } foreach (var animal in animals) { Console.WriteLine(animal); } }
private static void UpdateAnimalList(List <Animal> animals, string animalName, Mammal mammal) { Animal animal = animals.FirstOrDefault(a => a.AnimalName == animalName); if (animal == null) { animals.Add(mammal); } }