C# 将数组中的随机值设置到列表中,直到满足条件为止。在C中#
我想将数组中的新随机值设置到一个列表中,直到满足以下两个条件之一。但它只允许我在不考虑条件的情况下再加一个1值。在我输入“y”后,程序允许我获取另一个值,然后它再次询问我是否需要另一张卡,当我再次输入“y”时,代码继续,而不允许我添加另一个值。 第二个问题是if(Hands.playerHand.Sum()>22)我希望程序计算列表的总值,如果大于22,则执行命令 谢谢大家!C# 将数组中的随机值设置到列表中,直到满足条件为止。在C中#,c#,arrays,list,random,while-loop,C#,Arrays,List,Random,While Loop,我想将数组中的新随机值设置到一个列表中,直到满足以下两个条件之一。但它只允许我在不考虑条件的情况下再加一个1值。在我输入“y”后,程序允许我获取另一个值,然后它再次询问我是否需要另一张卡,当我再次输入“y”时,代码继续,而不允许我添加另一个值。 第二个问题是if(Hands.playerHand.Sum()>22)我希望程序计算列表的总值,如果大于22,则执行命令 谢谢大家! string userAnotherCard = Console.ReadLine();
string userAnotherCard = Console.ReadLine();
bool secondHand = true;
secondHand = (userAnotherCard == "y");
bool secondHandNo = true;
secondHandNo = (userAnotherCard == "n");
while(secondHand)
{
//if user want another card, this programm will ganerate another card and store it inside playerHand
Hands.playerHand.Add(Deck.CardDeck[Hands.rando.Next(0, Deck.CardDeck.Length)]);
Console.WriteLine("Your cards are: ");
Hands.playerHand.ForEach(Console.WriteLine);
Console.WriteLine("Would u like to take another card?");
Console.ReadLine();
if(Hands.playerHand.Sum() > 22)
Console.WriteLine("You loss, your cards sum is more than 21");
break;
}
while (secondHandNo)
break;
所以我稍微修改了代码。现在,我可以选择任意多的值,但while(secondHandNo)和while(Hands.playernand.Sum()>21)命令有问题。当我在取下另一张卡后输入“n”时(secondHandNo),代码将不会执行。while(Hands.playerHand.Sum()>21)也不会执行。不管我的答案是什么,它只是给了我更多的价值。请注意,当我在不使用另一张卡的情况下立即输入“n”时,该命令工作正常,它将带我进入代码的其余部分
string userAnotherCard = Console.ReadLine();
bool secondHand = true;
secondHand = (userAnotherCard == "y");
bool secondHandNo = true;
secondHandNo = (userAnotherCard == "n");
while (secondHand)
{
Hands.playerHand.Add(Deck.CardDeck[Hands.rando.Next(0, Deck.CardDeck.Length)]);
Console.WriteLine("Your cards are: ");
Hands.playerHand.ForEach(Console.WriteLine);
Console.WriteLine("Would u like to take another card?");
Console.ReadLine();
}
while (Hands.playerHand.Sum() > 21)
{
Console.WriteLine("You loss, your cards sum is more than 21");
break;
}
while (secondHandNo)
break;
好的,我能够修复这段代码。它现在似乎起作用了。我将整个块设置为while循环,并使用if语句和break设置每个条件;如果条件满足
while (true)
{
Console.WriteLine("Would u like to take another card?");
string userAnotherCard = Console.ReadLine();
bool secondHand = true;
secondHand = (userAnotherCard == "y");
bool secondHandNo = true;
secondHandNo = (userAnotherCard == "n");
if (secondHand)
{
Hands.playerHand.Add(Deck.CardDeck[Hands.rando.Next(0, Deck.CardDeck.Length)]);
Console.WriteLine("Your cards are: ");
Hands.playerHand.ForEach(Console.WriteLine);
}
if (Hands.playerHand.Sum() > 21)
{
Console.WriteLine("You loss, your cards sum is more than 21");
break;
}
if (secondHandNo)
break;
}
这里有很多问题:
userAnotherCard = Console.ReadLine();
中,而您的条件也会检查以前分配的值,并且从未更改。这就是你处于一个无休止的循环中的原因。我只想用条件本身来代替它:
while (userAnotherCard == "y")
,而不是简单的if
:
if (Hands.playerHand.Sum() > 21)
while(secondHandNo)中断代码>无效,可以从代码中删除
string userAnotherCard = Console.ReadLine();
while (userAnotherCard == "y")
{
Hands.playerHand.Add(Deck.CardDeck[Hands.rando.Next(0, Deck.CardDeck.Length)]);
Console.WriteLine("Your cards are: ");
Hands.playerHand.ForEach(Console.WriteLine);
Console.WriteLine("Would u like to take another card?");
userAnotherCard = Console.ReadLine();
if (Hands.playerHand.Sum() > 21)
{
Console.WriteLine("You loss, your cards sum is more than 21");
break;
}
}
您在哪里存储用户对您关于第二张卡的请求的响应?始终执行第一个while内的中断,因为它不在Sum之后的大括号块{..}内。做数学要求精度>22是23这里有很多无用的代码:f.i.while(secondhandno)break;一个简单的空行也会有同样的效果我如何存储用户响应?我尝试再次创建值为“y”的新bool varb,并将其与用户响应进行比较(所有这些都在while(二手){}中),但它不起作用。我真的是一个新的编码,所以我希望你能在这一点上给我小费。谢谢你好谢谢你的回复。我改了密码。请看一看,让我知道你的想法。!