public static void Main() { var input = string.Empty; var privates = new List <Private>(); while ((input = Console.ReadLine()) != "End") { var tokens = input.Split(); var soldierType = tokens[0]; switch (soldierType) { case "Private": var privateSoldier = new Private(tokens[1], tokens[2], tokens[3], double.Parse(tokens[4])); privates.Add(privateSoldier); Console.WriteLine(privateSoldier.ToString()); break; case "LeutenantGeneral": var soldiers = tokens.Skip(5).ToArray(); var leutenantGeneral = new LeutenantGeneral(tokens[1], tokens[2], tokens[3], double.Parse(tokens[4])); leutenantGeneral.AddSoldiers(soldiers, privates); Console.WriteLine(leutenantGeneral.ToString()); break; case "Engineer": if (tokens[5] == "Airforces" || tokens[5] == "Marines") { var repairs = tokens.Skip(6).ToArray(); var engineer = new Engineer(tokens[1], tokens[2], tokens[3], double.Parse(tokens[4]), tokens[5]); engineer.AddRepairs(repairs); Console.WriteLine(engineer.ToString()); } break; case "Commando": if (tokens[5] == "Airforces" || tokens[5] == "Marines") { var missions = tokens.Skip(6).ToArray(); var commando = new Commando(tokens[1], tokens[2], tokens[3], double.Parse(tokens[4]), tokens[5]); commando.AddMissions(missions); Console.WriteLine(commando.ToString()); } break; case "Spy": var spy = new Spy(tokens[1], tokens[2], tokens[3], int.Parse(tokens[4])); Console.WriteLine(spy.ToString()); break; } } }
//TODO => 40/100 must be refactoring public void Run() { string command = Console.ReadLine(); while (command != "End") { var tokens = command.Split(); var type = tokens[0].ToLower(); switch (type) { case "private": Private @private = new Private(tokens[1], tokens[2], tokens[3], decimal.Parse(tokens[4])); soldiers.Add(@private); break; case "leutenantgeneral": LieutenantGeneral lieutenantGeneral = new LieutenantGeneral(tokens[1], tokens[2], tokens[3], decimal.Parse(tokens[4])); for (int i = 5; i < tokens.Length; i++) { Private privat = (Private)soldiers.Single(s => s.Id == tokens[i]); lieutenantGeneral.AddPrivate(privat); } soldiers.Add(lieutenantGeneral); break; case "commando": //<id> <firstName> <lastName> <salary> <corps> <mission1CodeName> try { Commando commando = new Commando(tokens[1], tokens[2], tokens[3], decimal.Parse(tokens[4]), tokens[5]); for (int i = 6; i < tokens.Length; i += 2) { Missions missions = new Missions(tokens[i], tokens[i + 1]); commando.AddMissions(missions); } soldiers.Add(commando); } catch (ArgumentException) { } break; case "engineer": try { //Engineer <id> <firstName> <lastName> <salary> <corps> <repair1Part> <repair1Hours> … <repairNPart> <repairNHours> Engineer engineer = new Engineer(tokens[1], tokens[2], tokens[3], decimal.Parse(tokens[4]), tokens[5]); for (int i = 6; i < tokens.Length; i += 2) { Repair repair = new Repair(tokens[i], int.Parse(tokens[i + 1])); engineer.AddRepair(repair); } soldiers.Add(engineer); } catch (ArgumentException) { } break; case "spy": Spy spy = new Spy(tokens[1], tokens[2], tokens[3], int.Parse(tokens[4])); soldiers.Add(spy); break; } command = Console.ReadLine(); } soldiers.ForEach(Console.WriteLine); }
public void Run() { List <ISoldier> soldiers = new List <ISoldier>(); string input = string.Empty; while ((input = Console.ReadLine()) != "End") { ISoldier soldier = null; string[] data = input.Split(" ", StringSplitOptions.RemoveEmptyEntries); string type = data[0]; int id = int.Parse(data[1]); string firstName = data[2]; string lastName = data[3]; if (type == "Private") { decimal salary = decimal.Parse(data[4]); soldier = new Private(firstName, lastName, id, salary); } else if (type == "LieutenantGeneral") { decimal salary = decimal.Parse(data[4]); ILieutenantGeneral general = new LieutenantGeneral(firstName, lastName, id, salary); foreach (var item in data.Skip(5)) { ISoldier privateToAdd = soldiers.First(x => x.Id == int.Parse(item)); general.AddPrivates(privateToAdd); } soldier = general; } else if (type == "Engineer") { decimal salary = decimal.Parse(data[4]); string corps = data[5]; try { IEngineer engineer = new Engineer(firstName, lastName, id, salary, corps); string[] repairsData = data .Skip(6) .ToArray(); for (int i = 0; i < repairsData.Length; i += 2) { string partName = repairsData[i]; int hoursWorked = int.Parse(repairsData[i + 1]); IRepair repair = new Repair(partName, hoursWorked); engineer.AddRepairs(repair); } soldier = engineer; } catch (ArgumentException) { continue; } } else if (type == "Commando") { decimal salary = decimal.Parse(data[4]); string corps = data[5]; try { ICommando commando = new Commando(firstName, lastName, id, salary, corps); string[] missionsData = data .Skip(6) .ToArray(); for (int i = 0; i < missionsData.Length; i += 2) { try { string codeName = missionsData[i]; string state = missionsData[i + 1]; IMission mission = new Mission(codeName, state); commando.AddMissions(mission); } catch (ArgumentException) { continue; } } soldier = commando; } catch (ArgumentException ex) { continue; } } else if (type == "Spy") { int codeNumber = int.Parse(data[4]); soldier = new Spy(firstName, lastName, id, codeNumber); } if (soldier != null) { soldiers.Add(soldier); } } foreach (var item in soldiers) { Console.WriteLine(item); } }
public void Run() { string command = Console.ReadLine(); while (command != "End") { string[] tokens = command .Split(" ") .ToArray(); string type = tokens[0]; string id = tokens[1]; string firstName = tokens[2]; string lastName = tokens[3]; decimal salary = decimal.Parse(tokens[4]); if (type == "Private") { Private soldier = new Private(id, firstName, lastName, salary); this.army.Add(soldier); } else if (type == "LieutenantGeneral") { LieutenantGeneral general = new LieutenantGeneral( id, firstName, lastName, salary); string[] privatesCommand = tokens.Skip(5).ToArray(); foreach (var pid in privatesCommand) { ISoldier soldierToAdd = this.army .First(x => x.Id == pid); general.AddPrivate(soldierToAdd); } this.army.Add(general); } else if (type == "Engineer") { try { string corps = tokens[5]; IEngineer engineer = new Engineer(id, firstName, lastName, salary, corps); string[] repearTokens = tokens.Skip(6).ToArray(); AddPepairs(engineer, repearTokens); this.army.Add(engineer); } catch (InvalidCorpsExceptions ice) { //continue; } } else if (type == "Commando") { try { string corps = tokens[5]; ICommando commando = new Commando (id, firstName, lastName, salary, corps); string[] missingTokens = tokens .Skip(6) .ToArray(); for (int i = 0; i < missingTokens.Length; i += 2) { try { string codeName = missingTokens[i]; string state = missingTokens[i + 1]; IMissions mission = new Mission(codeName, state); commando.AddMissions(mission); } catch (InvalidStateExceptions ise) { continue; } } this.army.Add(commando); } catch (InvalidCorpsExceptions ice) { } } else if (type == "Spy") { int codeNumber = (int)salary; ISpy spy = new Spy(id, firstName, lastName, codeNumber); this.army.Add(spy); } command = Console.ReadLine(); } PrintOutput(); }