public static void Main(string[] args) { List <Soldier> soldiers = new List <Soldier>(); string input = string.Empty; while ((input = Console.ReadLine()) != "End") { string[] tokens = input.Split(); string soldierType = tokens[0]; Soldier soldier; try { soldier = SoldierFactory.GetSoldier(soldiers, soldierType, tokens); } catch (ArgumentException ex) { continue; } soldiers.Add(soldier); } Console.WriteLine(string.Join($"{Environment.NewLine}", soldiers)); }
public static void Main() { List <ISoldier> army = new List <ISoldier>(); string command; while ((command = Console.ReadLine()) != "End") { string[] tokens = command.Split(new char[] { }, StringSplitOptions.RemoveEmptyEntries); string soldier = tokens[0]; string id = tokens[1]; string firstName = tokens[2]; string lastName = tokens[3]; switch (soldier) { case "Private": double salary = double.Parse(tokens[4]); army.Add(SoldierFactory.GetPrivate(id, firstName, lastName, salary)); break; case "LeutenantGeneral": salary = double.Parse(tokens[4]); IList <ISoldier> privates = ExtractPrivates(tokens.Skip(5).ToList(), army); army.Add(SoldierFactory.GetLeutenantGeneral(id, firstName, lastName, salary, privates)); break; case "Engineer": salary = double.Parse(tokens[4]); string corps = tokens[5]; if (corps != "Airforces" && corps != "Marines") { break; } IList <IRepair> repairs = ExtractRepair(tokens.Skip(6).ToList(), army); army.Add(SoldierFactory.GetEngineer(id, firstName, lastName, salary, corps, repairs)); break; case "Commando": salary = double.Parse(tokens[4]); corps = tokens[5]; if (corps != "Airforces" && corps != "Marines") { break; } IList <IMission> missions = ExtractMission(tokens.Skip(6).ToList(), army); army.Add(SoldierFactory.GetCommando(id, firstName, lastName, salary, corps, missions)); break; case "Spy": int codeNumber = int.Parse(tokens[4]); army.Add(SoldierFactory.GetSpy(id, firstName, lastName, codeNumber)); break; default: break; } } foreach (var solder in army) { Console.WriteLine(solder); } }