继续获取IndexOutOfRange

时间:2014-11-03 01:25:20

标签: c#

我正在创建一个包含三个阵列的程序:一个用于人的姓,一个用于得分,一个用于玩家号。现在,我已经完成了所有数组和一切,但是当我尝试调用我的ProcessDelete方法时,我一直在

System.IndexOutOfRangeException

任何帮助将不胜感激

     static  Int32[] ProcessDelete(Int32[] playerNumbers, ref Int32 playerCount, String[] playerLastName, Int32[] playerPoints )
    {
        Int32[] newArray = new Int32[playerNumbers.Length - 1]; String[] newArray2 = new String[playerLastName.Length - 1]; Int32[] newArray3 = new Int32[playerPoints.Length - 1];

        int index = 0;
        int index2 = 0;
        int index3 = 0;
        int j = 0;
        int k = 0;
        int t = 0;
        while (index < playerNumbers.Length)
        {
            if (index != playerCount)
            {
                newArray[j] = playerNumbers[index];
                j++;
            }

            index++;
        }

        while (index2 < playerLastName.Length)
        {
            if (index2 != playerCount)
            {
                newArray2[k] = playerLastName[index2];
                k++;
            }

            index2++;
        }
          while (index3 < playerLastName.Length)
        {
            if (index3 != playerCount)
            {
                newArray3[t] = playerPoints[index3];
                t++;
            }

            index3++;
        }
        return newArray;          
    }

    static void DeletePlayer(Int32[] playerNumbers, String[] playerLastName, Int32[] playerPoints, ref Int32 playerCount, Int32 MAXPLAYERS)
    {
        int player;// Player number to delete
        int playerindex;//index of the player number in Array
        if (playerCount < MAXPLAYERS)
        {

            player = GetPositiveInteger("\nDelete Player: please enter the player's number");
            playerindex = GetPlayerIndex(player, playerNumbers, playerCount);


           if (playerindex != -1)
            {

                {

                    Console.WriteLine("\nDelete Player: Number - {0}, Name - {1}, Points - {2}", playerNumbers[playerindex], playerLastName[playerindex], playerPoints[playerindex]);
                    Console.WriteLine("Succesfully Deleted");
                    Console.WriteLine();
                    ProcessDelete(playerNumbers, ref playerCount, playerLastName, playerPoints);
                }
            }
            else
                Console.WriteLine("\nDelete Player: player not found");
        }
        else
            Console.WriteLine("\nDelete Player: the roster is empty");
    }

}

}

1 个答案:

答案 0 :(得分:0)

在你的第三个循环中你有:

newArray3[t] = playerPoints[index2];
k++;

应该是:

newArray3[t] = playerPoints[index3];
t++;