Delete funktion C# fungerar ej...

Trädvy Permalänk
Medlem
Registrerad
Mar 2017

Delete funktion C# fungerar ej...

Hej!
Vi är en grupp som läser programmering i C# och har en metod som inte vill fungera...
Vårt program är ett spelarregister över spelare i Manchester United.
Vi har en delete metod som tar bort spelare genom att vi skriver i det numret spelaren har.

Koden för detta ser ut såhär:

public static void DeleteSpelare(int nummer)
{
Spelarinfo[] nyVector = new Spelarinfo[spelare.Length - 1];
for (int i = 0; i < nummer; i++)
{
nyVector[i] = spelare[i];
}
for (int i = nummer + 1; i < spelare.Length; i++)
{
nyVector[i - 1] = spelare[i];
}
spelare = nyVector;

}

Sedan skriver vi i i vårat menyval såhär för att anropa metoden:

else if (choice == 4)
{

Console.WriteLine("Skriv in numret för spelaren du vill ta bort:");
int nummer = int.Parse(Console.ReadLine());
DeleteSpelare(nummer);

}

Problemet är att det kommer inget på errorlist men när vi ska ta bort en viss spelare kommer det sedan upp:

An unhandled exception of type 'System.IndexOutOfRangeException' occurred in ManU3.exe

Additional information: Indexet låg utanför gränserna för matrisen.

Förstår inte riktigt problemet..

Tack på förhand!

Trädvy Permalänk
Medlem
Plats
Westrobothnia
Registrerad
Okt 2008

Jag gissar att en Spelarinfo innehåller ett godtyckligt spelarnummer, och inte dess positionsindex i Spelarinfo-arrayen? I så fall är det där problemet ligger.

1800X, 2080 Ti, 4K

Trädvy Permalänk
Medlem
Registrerad
Mar 2017

@backfeed:

Hur ändrar man detta?

Trädvy Permalänk
Medlem
Plats
Westrobothnia
Registrerad
Okt 2008

Ni använder det angivna spelarnumret som index i Spelarinfo-arrayen, vilket är ett feltänk om det är som jag tror. Det ni behöver göra är att ta reda på vilket index i Spelarinfo-arrayen som har det angivna spelarnumret. Mer kan jag nog inte säga utan att lösa uppgiften åt er.

1800X, 2080 Ti, 4K