Index was outside the bounds of the array.

0

witam ^^
jestem początkującym więc pytanie może być głupie ;P
Chcę stworzyć grę karcianą. Lecz gdy próbuję zapełnić talię wywala mi "Index was outside the bounds of the array."
programik jak na razie wygląda tak :

using System;

public class bla
{
    public static void Main()
    {
        karta[] kartaTali = new karta[52];

        int wartos = 2;
        
        for ( int i = 0; i <= kartaTali.Length; i++ )
        {
            kartaTali[i] = new karta();   //                   <-- błąd !
              
            kartaTali[i].wartosc = wartos;

            if      ( i % 4 == 0 || i == 0 ) kartaTali[i].kolor = "karo";
            else if ( i % 4 == 1 || i == 1 ) kartaTali[i].kolor = "kier";
            else if ( i % 4 == 2 || i == 2 ) kartaTali[i].kolor = "trefl";
            else if (i % 4 == 3 || i == 3)
            {
                kartaTali[i].kolor = "pik";
                wartos++;
            }     
        }
    }
}

public class karta
{
    public int wartosc;
    public string kolor;
}

może mi ktoś wytłumaczyć w czym tkwi problem i jak go rozwiązać ?

0
for ( int i = 0; i <= kartaTali.Length; i++ )

<= - czyli w ostatnim przebiegu pętli będziesz się odnosić do kartaTali[kartaTali.Length]. Zaczynasz dostrzegać problem? ;)

Swoją drogą, "talii", nie "tali" - http://www.sjp.pl/co/Talia

0

zamiast <= powinno być < bo tablice indeksujemy od 0 do N-1

0

działa ! :D wielkie dzięki. długo się z tym męczyłem ( nie zwracajcie uwagi na ortografię :P )

1

kartaTalii - dziwnie bardzo wygląda. Nie lepiej taliaKart?

1 użytkowników online, w tym zalogowanych: 0, gości: 1