我有一个我似乎无法弄清楚的问题。 我想制作一个程序,生成两个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");
}
}
}
}
}
这是我现有的代码。程序给出了两个整数,但是当我输入它们时它只是告诉我我错了。当我输入其中一个数字时,它表示我是正确和错误的。我不知道问题是什么。再次,非常感谢帮助。
答案 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");