Программа пропущенных дат - PullRequest
0 голосов
/ 03 апреля 2012
Console.WriteLine("Enter the path where the text file can be found");
string path = Console.ReadLine();

string text = System.IO.File.ReadAllText("C:\\InputFile.txt");

string[] dates = text.Split('\n');

for (int i = 0; i < dates.Length; i++)
{
    if (dates[i] != "" && dates[i] != null)
    {
        dates[i] = dates[i].Remove(dates[i].Length - 1);
    }
}
for (int j = 0; j < dates.Length; j++)
{
    if (dates[j] != "" && dates[j] != null)
    {
        DateTime currentdate = Convert.ToDateTime(dates[j-1]);
        DateTime futuredate = Convert.ToDateTime(dates[j]);

        if (currentdate.AddDays(1) != futuredate)
        {
            Console.WriteLine(" {0} {1}", currentdate.AddDays(1).ToShortDateString(), currentdate.AddDays(1).DayOfWeek);
        }
    }
}

При запуске программы выдается сообщение об ошибке:

DateTime currentdate = Convert.ToDateTime (date [j-1]);«Индекс вышел за границы массива.»

Ответы [ 4 ]

1 голос
/ 03 апреля 2012

Вы начинаете свой цикл с индекса 0.

0 - 1 - это -1.

В индексе -1 есть элемент, отсюда и ошибка.

0 голосов
/ 03 апреля 2012

Ваша проблема здесь:

 DateTime currentdate = Convert.ToDateTime(dates[j-1]);

На итерации j=0 индекс разрешается как dates[j-1] и j-1 == -1

Вам необходимо исправить, как этот цикл проверяетпервый элемент этого массива.

0 голосов
/ 03 апреля 2012

Когда j = 0, j-1 = -1

date [-1] находится за пределами массива.Вам нужно будет сделать что-то особенное, когда j = 0

0 голосов
/ 03 апреля 2012

Хорошо, когда j равно 0, у вас возникнет проблема.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...