所以基本上我必须创建一个介于1-4之间的彩票计划。用户猜测3个数字,你必须看看它们是否匹配所有三个数字。我的问题是要获得大奖。您必须以正确的顺序将您的猜测与随机数匹配。例如。
if (guess1 == ran1 && guess2 == ran2 && guess3 == ran3)
Console.WriteLine("$10,000");
但是,如果你以错误的顺序匹配三个数字。你仍然可以获得1000美元。但这是我遇到问题的地方。我像这样编写了1000美元的代码
{if (guess1 == ran1)
++matches;
else
if (guess1 == ran2)
++matches;
else
if (guess1 == ran3)
++matches;
}
{
if (guess1 == ran1)
++matches;
else
if (guess1 == ran2)
++matches;
else
if (guess1 == ran3)
++matches;
}
{
if (guess1 == ran1)
++matches;
else
if (guess1 == ran2)
++matches;
else
if (guess1 == ran3)
++matches;
if (matches == 3)
Console.WriteLine("$1000");
所以每次你赢得大奖,你都会赢得10,000美元和1000美元,但这不是我想要的。
无论如何我可以解决它,所以当用户以正确的顺序输入彩票号码时,他们只赢得10,000美元,而不是两者都赢?请注意,这是一个基本的编程课程。没什么好看的。
答案 0 :(得分:3)
LINQ是否喜欢?
bool userGuessedInOrder = guesses.SequenceEqual(correctNumbers);
bool userGuessedInSomeOrder = !guesses.Except(correctNumbers).Any();
答案 1 :(得分:0)
作为一个稍微简单的基于LINQ的解决方案,它说明了如何将数字封装在数据结构中,以及如何将算法封装在函数中。
public static int Payout(IEnumerable<int> randoms, IEnumerable<int> guesses)
{
if (randoms.SequenceEqual(guesses))
return 10000;
IEnumerable<int> sortedRandoms = randoms.OrderBy(a => a);
IEnumerable<int> sortedGuesses = guesses.OrderBy(a => a);
if (sortedRandoms.SequenceEqual(sortedGuesses))
return 1000;
return 0;
}
答案 2 :(得分:-1)
if (guess1 == ran1 && guess2 == ran2 && guess3 == ran3)
{
Console.WriteLine("$10000");
}
else if ((guess1 == ran1 || guess1 == ran2 || guess1 == ran3) &&
(guess2 == ran1 || guess2 == ran2 || guess2 == ran3) &&
(guess3 == ran1 || guess3 == ran2 || guess3 == ran3))
{
Console.WriteLine("$1000");
}
这应该有效。您可能还想检查变量名称;看起来你可能忘记在比较中增加变量名末尾的数字。