vendredi 29 juin 2018

why is the output in lottery code isn't working?

I'm supposed to make a code in c# (microsoft visual studio 2017) that lets the user input six numbers, and then compare them to an array of six randomly generated numbers(with no duplicates).

If the user has one match, he's supposed to get a message saying he had one match, and different messages for two or three matches, and so on.

This is what I got so far:

static bool isValueInArray(int value, int[] a)
    {
        for (int i = 0; i < a.Length; i++)
        {
            if (a[i] == value)
            {
                return true;
            }
        }

        return false;
    }

  static void Main(string[] args)
    {
        int min = 0;
        int max = 6;
        Random randnum = new Random();//random number generator
        int[] numbers = new int[6];// generates six numbers
        for (int i = 0; i < numbers.Length; i++)
        {
            numbers[i] = randnum.Next(min, max);//sets the numbers between 0 to 6
            if(isValueInArray( i, numbers))
            {
                numbers[i] = randnum.Next(min, max);
            }
        }

        try
        {
            Console.WriteLine("Hello and Welcome to our little game of lottery! lets see just how much luck you got!"); // greetings and instructions
            Console.WriteLine("You'll now get to choose 6 different numbers between 0 to 6 to play with.");
            Console.WriteLine("Go ahead and type them in.");

            int[] lottery = new int[6];

            for (int i = 0; i < lottery.Length; i++)
            {
                lottery[i] = int.Parse(Console.ReadLine()); // array to catch six numbers input
                if (lottery[i] > 6)//checking if the numbers fit between 0 and 6
                {
                    Console.WriteLine("whoops! the number you enetered isn't in range! please try again ^^");
                    break;
                }

                int x = 6;
                for (int a = 0; a < lottery.Length; a++)
                {
                    for (int b = 0; b < numbers.Length; b++)
                    {
                        if (lottery[a] == numbers[b])
                        {
                            a++;
                            x--;
                            if (x == 6)
                            {
                                Console.WriteLine("six match");
                                break;
                            }
                            else if (x == 5)
                            {
                                Console.WriteLine("five match");
                                break;
                            }
                            else if (x == 4)
                            {
                                Console.WriteLine("four match");
                                break;
                            }
                            else if (x == 3)
                            {
                                Console.WriteLine("three match");
                                break;
                            }
                            else if (x == 2)
                            {
                                Console.WriteLine("two match");
                                break;
                            }
                            else if (x == 1)
                            {
                                Console.WriteLine("one match");
                                break;
                            }

                        }
                    }
                }
            }
        }

        catch (FormatException)// checking if the input is in char format
        {
            Console.WriteLine("only numbers please!");
        }
    }

My problem is with the output. The program seems to go over all of the "else if" options and print all of them, instead of picking and printing just one of them.




Aucun commentaire:

Enregistrer un commentaire