The error is caused in the for loop :
for (i = 0; i < hand.Length; i++)
{
   Console.WriteLine(hand[i]);
}
I am trying to store the values to be able to display them at a later time. The writeline is there to help me make sure the code actually works as I intend it to.
The rest of the code for reference: *edit: added a line of code
enum house //variable type for the card type
{
    Spades, Hearts, Clubs, Diamonds
}
enum cards //variable type for the cards
{
    Joker, Ace, Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten, Jack, Queen, King
}
class Program
{
    static void Main(string[] args)
    {
        Random rnd;
        Random rnd2;
        int i;
        int random;
        int random2;
        String[] hand;
        house randomhouse;
        cards randomcard;
        //all declared variables
        Console.WriteLine("Your hand is made up of :");
        for (i = 0; i <= 6; i++)//does everything in the {} until i is equal to 6
        {
            rnd2 = new Random();
            random2 = rnd2.Next(0, 14);
            randomcard = (cards)random2; //selecting a random card from joker to king
            if (randomcard > (int)cards.Joker) //if the random card isn't a joker
            {
                rnd = new Random();
                random = rnd.Next(0, 4);
                randomhouse = (house)random;//selects a random card type
                Console.WriteLine(randomcard + " of " + randomhouse); //outputs the name of the card
                System.Threading.Thread.Sleep(1000);//wait 1 second before getting the new card
            }
            else
            {
                Console.WriteLine(randomcard);//outputs "Joker"
                System.Threading.Thread.Sleep(1000);//wait 1 second before getting the new card
            }
            hand = new String[i];//making a new array value for every loop
            hand[i] = randomcard.ToString();//adding randomcard to the array*
        } 
        Console.Clear();
        for (i = 0; i < hand.Length; i++)
        {
            Console.WriteLine(hand[i]);
        }
        Console.ReadKey();
    }
}
                The compiler can never be sure that hand is actually initialized. You should either initialize it earlier, or set it to null, so you bypass this compiler check.
So you could do this, but it is in fact bad practice! When changing your code you could end up with a NullReferenceException!
String[] hand = null;
You do know your code doesn't actually work, since you end up with one array in the end. I think you mean this:
hand = new String[6];
...
hand[i] = theValue;
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With