индекс c # вне границ массива, никогда не выходит из цикла for - PullRequest
0 голосов
/ 18 апреля 2011

Моя программа компилируется, но при запуске она никогда не выходит из цикла и говорит, что массив слишком большой.Это мой код:

public class ComparableArray
{   
    public static void Main()
    {
    taxpayer[] taxArray = new taxpayer[5];
    int x;
    for(x= 0; x < taxArray.Length; ++x)
        taxArray[x] = new taxpayer();

        Console.Write("Enter Social Security Number for taxpayer {0}: ", x+1);
        taxArray[x].SSN = Console.ReadLine();
                    Console.Write("Enter gross income for taxpayer {0}: ", x+1);
                    taxArray[x].Income = Convert.ToDouble(Console.ReadLine());
        taxpayer.getRates();
        x++;

    }
}

Я не уверен, что делаю не так, буду признателен за любую помощь.

Ответы [ 4 ]

5 голосов
/ 18 апреля 2011

Вы увеличиваете x дважды в цикле:

Один раз здесь:

for(x= 0; x < taxArray.Length; ++x)

и один раз здесь:

x++;
2 голосов
/ 18 апреля 2011

Цикл для должен быть объявлен немного иначе:

// notice the inclusion of the variable type in the for
// and you want to use x++, not ++x
for(int x= 0; x < taxArray.Length; x++)

Но настоящая проблема заключается в увеличении x++ внутри цикла. Поскольку объявление цикла for включает в себя инкремент (x ++), нет необходимости также увеличивать его внутри цикла.

2 голосов
/ 18 апреля 2011

Вам не нужно увеличивать счетчик цикла x++; в теле цикла. Цикл уже делает это.

0 голосов
/ 20 апреля 2011

Все ответы были неправильными, хотя спасибо за помощь. Я использовал х дважды; Однажды в цикле for, а также в Console.Write я просто изменил цикл for на y и отлично работает.

int x=0;
int y;
for(y= 0; y < taxArray.Length; ++y){
    taxArray[x] = new taxpayer();

    Console.Write("Enter Social Security Number for taxpayer {0}: ", x+1);
    taxArray[x].SSN = Console.ReadLine();
    Console.Write("Enter gross income for taxpayer {0}: ", x+1);
    taxArray[x].Income = Convert.ToDouble(Console.ReadLine());
    taxpayer.getRates();
    x++;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...