AirlineDelays.Program.PrintDelaysForEachAirline C# (CSharp) Метод

PrintDelaysForEachAirline() статический приватный Метод

static private PrintDelaysForEachAirline ( string origin, string destination ) : void
origin string
destination string
Результат void
        static void PrintDelaysForEachAirline(string origin, string destination)
        {
            List<Airline> airlinesOnRoute = new List<Airline>();
            string[] lines = File.ReadAllLines(AirlinePerformanceFileName);

            for (int i = 1 /* We skip the first line */; i < lines.Length; ++i)
            {
                string line = lines[i];

                string[] parts = line.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                if (parts.Length != 7)
                    continue;

                if (parts[1] == origin && parts[2] == destination)
                {
                    // Add data to the list of matching airlines on route
                    airlinesOnRoute.Add(new Airline
                    {
                        AirlineCode = parts[0],
                        ArrivalDelay = int.Parse(parts[4])
                    });
                }
            }

            if (airlinesOnRoute.Count == 0)
            {
                Console.WriteLine("There are no flights on this route.");
                return;
            }

            Console.WriteLine("\nThere a total of {0} flights along this route.", airlinesOnRoute.Count);
            Console.WriteLine("Below is the break down of these flights according to airline:\n");

            string codeOfCurrentAirline = "";
            int maxDelay = int.MinValue;
            int totalArrivalDelay = 0;
            int totalFlightsOfCurrentAirline = 0;
            int avgArrivalDelay = 0;
            foreach (Airline airline in airlinesOnRoute)
            {
                //Get the first airline
                if (codeOfCurrentAirline == "")
                    codeOfCurrentAirline = airline.AirlineCode;

                maxDelay = Math.Max(maxDelay, airline.ArrivalDelay);

                totalArrivalDelay += airline.ArrivalDelay;
                totalFlightsOfCurrentAirline++;

                // If the iterator moves to the next airline or this was the last item in the list
                // report the data related to the previous airline and clear variables
                if (codeOfCurrentAirline != airline.AirlineCode || airline.Equals(airlinesOnRoute[airlinesOnRoute.Count - 1]))
                {
                    if (totalFlightsOfCurrentAirline != 0) avgArrivalDelay = totalArrivalDelay / totalFlightsOfCurrentAirline;

                    Console.WriteLine(
                        "There were {0} flights between these airports for airline {1}.\n" +
                        "The average delay for this airline is {2} minutes.\n" +
                        "The maximum delay for this airline is {3} minutes.\n\n",
                        totalFlightsOfCurrentAirline, codeOfCurrentAirline, avgArrivalDelay, maxDelay);

                    totalArrivalDelay = 0;
                    totalFlightsOfCurrentAirline = 0;
                    maxDelay = 0;
                    codeOfCurrentAirline = airline.AirlineCode;
                }
            }
        }