检查用户输入是否等于随机生成的整数列表

时间:2014-02-03 23:48:27

标签: c# oop random console int

我有一个我似乎无法弄清楚的问题。 我想制作一个程序,生成两个1到10之间的随机整数,然后要求用户输入。用户必须输入程序给出的相同整数。 我知道这听起来很简单,但我无法理解它。帮助绝对会很棒。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Prototyping3
 {
     class Program
     {
        static void Main(string[] args)
        {

             Random random = new Random();
            List<int> selection = new List<int>();

            selection.Add(random.Next(0, 9));
            selection.Add(random.Next(0, 9));
            foreach (int s in selection) 
            {
                 Console.Write(s);
            }
            Console.WriteLine("...");
            string input = Console.ReadLine();

            int converted = Convert.ToInt32(input);

            for (int i = 0; i < selection.Count(); i++) 
            {
                 if (converted == selection[i])
                 {
                     Console.WriteLine("correct");
                 }
                 else
                 {
                     Console.WriteLine("wrong");
                 }
            }

        }
    }
}

这是我现有的代码。程序给出了两个整数,但是当我输入它们时它只是告诉我我错了。当我输入其中一个数字时,它表示我是正确和错误的。我不知道问题是什么。再次,非常感谢帮助。

2 个答案:

答案 0 :(得分:0)

似乎如果您输入正确的第一个号码,它会告诉您正确的。但是,由于你永远不会重新输入第二个数字并将其存储在converted中,第二个数字将是错误的(除非两个数字是相同的。你应该再次询问用户输入,或者只是取两个数字)一次。

答案 1 :(得分:0)

它正在循环,所以当你输入一个数字时,它会在下一个selection集合上循环,该集合有2。假设顺序无关紧要。如果确实如此,那么只需执行for循环并检查两个集合的索引是否相等。

List<int> userInput = new List<int>();
for (int i = 0; i < selection.Count(); i++)
{
 var int32 = Convert.ToInt32(Console.ReadLine());
 userInput.Add(int32);
}

Console.WriteLine(userInput.Intersect(selection).Count() == selection.Count ? "correct" : "wrong");