需要帮助比较彩票模拟的数组

时间:2017-12-09 01:26:46

标签: c#

我可能在这里搞砸了,但这是我到目前为止所做的。那么如何将6个随机生成的彩票中奖号码与用户输入的6个数字进行比较。说明书显示“显示中奖号码,玩家号码以及匹配的号码数量。例如,如果您的中奖号码是3,5,9,1,4,7且您的玩家号码是2,5,7,1 ,9,8,然后你有两个匹配(5和1).5在第二个位置,1在两个阵列中的第四个位置。“此外,我尝试使用randomInts生成6个随机Winning Numbers,但不确定我是否应该使用“i< list.Length”或其他内容。任何帮助赞赏。

    static void Main(string[] args)
    {
        //array declarations
        const int SIZE = 6;
        int[] myLottery = new int[SIZE];
        int winning;
        int player;

        //methods call
        FillLottery(myLottery);
        PrintLottery(myLottery);


    }
    //generate 6 random numbers to fill the array
    static void FillLottery(int[] list)
    {
        Random randomInts = new Random();
        for (int i = 0; i < list.Length; i++)
        {
            list[i] = randomInts.Next(1, 10);
        }
    }
    //print the array
    static void PrintLottery(int[] list)
    {
        for (int i = 0; i < list.Length; i++)
        {
            Console.Write($"{list[i],2}");
            if ((i + 1) % 10 == 0)
                Console.WriteLine();
        }
    }

2 个答案:

答案 0 :(得分:0)

我建议将其分为3个单独的for循环和if/else个陈述。

为了节省时间,我已将彩票生成的最大数量设置为1,尽管可以轻松更改。它有助于逐个完成每个步骤并慢慢建立它,而不是同时完成所有步骤。在根据用户输入检查随机生成的数字时,我发现这一点尤其正确。

要跟踪用户号码和彩票号码是否匹配,您可以使用bool[]

static void Main(string[] args)
{
    //create size, and random object
    const int SIZE = 6;
    const int maxNumberInLottery = 1;
    Random rnd = new Random();
    //create int[] for the lot numbers
    int[] lotteryNumbers = new int[SIZE];
    string[] usersNumbers = new string[SIZE];

    //Create a bool[] for each case
    bool[] matches = new bool[SIZE];

    //Create lottery numbers
    for (int i = 0; i < SIZE; i++)
    {
        lotteryNumbers[i] = rnd.Next(1, maxNumberInLottery + 1);
    }
    //Read user input
    for(int j = 0; j < SIZE; j++)
    {
        Console.Write("Enter user pick #{0}:", j+1);
        string userInput = Console.ReadLine();
        usersNumbers[j] = userInput;
    }
    //check if matching
    for(int k = 0; k < SIZE; k++)
    {
        Console.Write("You entered: {0}. Lottery generated: {1}", usersNumbers[k], lotteryNumbers[k]);
        Console.WriteLine();
        try
        {

            if (int.Parse(usersNumbers[k]) == lotteryNumbers[k])
            {
                Console.WriteLine("       !MATCH!");
                matches[k] = true;
            }
        }
        catch
        {

        }    
    }
    //check if the bool[] contains any false values at all
    if(!matches.Contains(false))
    {
        Console.WriteLine("WE HAVE A WINNER");
    }
    Console.ReadKey();
}

输出:

 Enter user pick#1:1
 Enter user pick#2:21
 Enter user pick#3:1
 Enter user pick#4:2
 Enter user pick#5:1
 Enter user pick#6:3

 You entered: 1. Lottery generated: 1
        !MATCH!
 You entered: 21. Lottery generated: 1
 You entered: 1. Lottery generated: 1
        !MATCH!
 You entered: 2. Lottery generated: 1
 You entered: 1. Lottery generated: 1
        !MATCH!
 You entered: 3. Lottery generated: 1

输出2:

 Enter user pick#1:1
 Enter user pick#2:1
 Enter user pick#3:1
 Enter user pick#4:1
 Enter user pick#5:1
 Enter user pick#6:1

 You entered: 1. Lottery generated: 1
        !MATCH!
 You entered: 1. Lottery generated: 1
        !MATCH!
 You entered: 1. Lottery generated: 1
        !MATCH!
 You entered: 1. Lottery generated: 1
        !MATCH!
 You entered: 1. Lottery generated: 1
        !MATCH!
 You entered: 1. Lottery generated: 1
        !MATCH!
WE HAVE A WINNER!

希望这有帮助。

答案 1 :(得分:-2)

我知道这是一个老问题,但我想补充一点,没有人指出一个错误。请记住list length -1,如果您要从0开始循环。被接受的答案是一个简单答案的大量代码。 只需将用户的所有参数放在一行中,将字符串解析为一个数组,然后在一个循环中添加一个if,以检查任一数组中该索引处的每个值是否匹配,并打印出获胜和用户编号以及匹配的编号。