ReadLine - индекс массива вне границ - PullRequest
0 голосов
/ 16 января 2012

Я отлаживал эту программу, чтобы найти ошибку, но не смог преуспеть в этом. По какой-то причине он отображает ошибку - индекс массива выходит за пределы этой строки move [nCount] .sDirection = sStep [0]; Я знаю, этот форум не предназначен для отладки, извините за это.

      class Program
{
     struct move
    {
       public char sDirection;
       public int steps;
    }
    static void Main(string[] args)
    {
        int nNumOfInstructions = 0;
        int nStartX = 0, nStartY = 0;
        move[] moves = new move[nNumOfInstructions];


        nNumOfInstructions=Convert.ToInt32(Console.ReadLine());


        string sPosCoOrd = Console.ReadLine();
        nStartX = Convert.ToInt32(sPosCoOrd[0]);

        nStartY = Convert.ToInt32(sPosCoOrd[2]);

        string sStep = "";

        for (int nCount = 0; nCount < nNumOfInstructions; nCount++)
        {
            sStep = Console.ReadLine();
            int length = sStep.Length;
            moves[nCount].sDirection = sStep[0];
            moves[nCount].steps = Convert.ToInt32(sStep[1]);


        }


        Console.ReadLine();
    }
}

Ответы [ 2 ]

1 голос
/ 16 января 2012

Вы, вероятно, хотите сделать это так:

class Program
{
    struct move
    {
        public char sDirection;
        public int steps;
    }

    static void Main(string[] args)
    {
        int nNumOfInstructions = Convert.ToInt32(Console.ReadLine());
        move[] moves = new move[nNumOfInstructions];

        string sPosCoOrd = Console.ReadLine();
        int nStartX = Convert.ToInt32(sPosCoOrd[0]);
        int nStartY = Convert.ToInt32(sPosCoOrd[2]);

        string sStep = String.Empty;

        for (int nCount = 0; nCount < nNumOfInstructions; nCount++)
        {
            sStep = Console.ReadLine();
            int length = sStep.Length;
            moves[nCount].sDirection = sStep[0];
            moves[nCount].steps = Convert.ToInt32(sStep[1]);
        }
    }
}
1 голос
/ 16 января 2012

В вашем коде массив moves создается как массив нулевой длины. Для любого индекса доступ к этому массиву неизбежно приведет к выходу индекса Array за пределы

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