private void createMonthlyBreakdown(WeatherDataCollection daysForReport, StringBuilder report)
        {
            var highestTemp = daysForReport.GetDaysWithHighestTempForEachMonth();
            var lowestTemp  = daysForReport.GetDaysWithLowestTempForEachMonth();
            var averageHigh = daysForReport.GetAverageHighTempForEachMonth();
            var averageLow  = daysForReport.GetAverageLowTempForEachMonth();
            var monthCount  = 1;

            for (var i = 0; i < daysForReport.GroupByMonth().Count; i++)
            {
                while (highestTemp[i][0].Date.Month != monthCount && monthCount < 12)
                {
                    var prevMonthName        = DateTimeFormatInfo.CurrentInfo.GetMonthName(monthCount);
                    var prevMonthYear        = highestTemp[i][0].Date.Year;
                    var prevMonthsDaysOfData = " (0 days of data)";
                    report.Append(prevMonthName + $" {prevMonthYear}" + prevMonthsDaysOfData + Environment.NewLine);
                    report.Append(Environment.NewLine);
                    monthCount++;
                }

                var monthName  = highestTemp[i][0].Date.ToString("MMMM", CultureInfo.InvariantCulture);
                var year       = highestTemp[i][0].Date.Year;
                var daysOfData = $" ({daysForReport.GroupByMonth()[i].Count} days of data)";
                report.Append(monthName + $" {year}" + daysOfData + Environment.NewLine);

                this.formatHighestTempForMonths(highestTemp, i, report);
                this.formatLowestTempForMonths(lowestTemp, i, report);
                report.Append($"Average High: {averageHigh[i]:F}" + Environment.NewLine);
                report.Append($"Average Low: {averageLow[i]:F}" + Environment.NewLine);
                report.Append(Environment.NewLine);
                monthCount++;
            }
        }