2015-11-29 3 views
-1

В принципе мне нужно написать программу, которая вычисляет среднее количество осадков в месяц за x лет. Я хочу, чтобы он спрашивал у пользователя, сколько лет после этого используется цикл циклов через все месяцы и в конце расчета среднего количества осадков. Но я получаю сообщение об ошибке, когда я запускаю егоВне границ с индексом массива в C#

Необработанное исключение типа «System.IndexOutOfRangeException» произошло в Rainfall.exe

Я думаю, что это происходит, что после внутренней отделки для петель y установлено в 12, что делает массив вне границ, но я думал, что как только внешний массив завершит каждый цикл, когда переменная y внутри будет сброшена на 0.

Может ли кто-нибудь пролить свет на это, пожалуйста?

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace Rainfall 
{ 
    class Program 
    { 
    static void Main(string[] args) 
    { 
     Console.WriteLine("This program will calculate the average amount of rainfall per month over the course of x years. "); 
     Console.WriteLine(); 

     double years = 0; 

     Console.WriteLine("Over how many years will this calculation take place?"); 

     years = int.Parse(Console.ReadLine()); 
     string[] months = {"January", "February", "March", "April", "May", "June", "July", "August", "October", "November", "December" }; 

     double totalRainfall = 0; 
     double monthRain = 0; 
     double totalMonths = 0; 
     double averageRainfall = 0; 

     for (int x = 0; x < years; x++) 
     { 
      for(int y = 0; y < 12; y++) 
      { 
       Console.WriteLine("Enter the rainfall for the month of {0}", months[y]); 

       monthRain = int.Parse(Console.ReadLine()); 

       totalRainfall = totalRainfall + monthRain; 
      } 
     } 

     averageRainfall = totalRainfall/totalMonths; 

     Console.WriteLine("The average rainfall per month is " + averageRainfall); 
     Console.ReadLine(); 
    } 
    } 
} 
+0

И вам нужно посчитать итоговые месяцы. – kame

+0

@kame, что вы имеете в виду? –

+0

'totalMonth' все еще 0. – kame

ответ

5

В вашем for цикла вы ожидаете там быть 12 месяцев, но в массиве месяцев у вас есть только 11 месяцев - сентябрь отсутствует. Добавьте его, и все должно работать нормально:

string[] months = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" }; 
+1

Я идиот. Огромное спасибо. –

Смежные вопросы