C# 循环不识别语句
所以我正在为学校做这个骰子游戏,但我偶然发现了这个问题: 首先,让我给出一些背景。 我有一个名为C# 循环不识别语句,c#,arrays,C#,Arrays,所以我正在为学校做这个骰子游戏,但我偶然发现了这个问题: 首先,让我给出一些背景。 我有一个名为diceResults[]的数组,其中掷骰子的数量保存在数组中(即,您掷了两个一的骰子,因此数组的第一个索引是2) 现在一对,两对,三对一类的,满屋子的都很好用。 但是当一个满座的房子被滚动时,它会认出一对,三个一类的,一个满座的房子。但它不认识三对中的第二对。 我试过几种解决办法,但似乎都不管用 for (int i = 0; i < diceResults.Length; i
diceResults[]
的数组,其中掷骰子的数量保存在数组中(即,您掷了两个一的骰子,因此数组的第一个索引是2)
现在一对,两对,三对一类的,满屋子的都很好用。
但是当一个满座的房子被滚动时,它会认出一对,三个一类的,一个满座的房子。但它不认识三对中的第二对。
我试过几种解决办法,但似乎都不管用
for (int i = 0; i < diceResults.Length; i++)
{
if (diceResults[i] == 2)
{
onePair = true;
for (int j = i + 1; j < diceResults.Length; j++)
{
if (diceResults[j] == 2 || diceResults[j] == 3)
{
twoPair = true;
}
}
}
}
for (int i = 0; i < diceResults.Length; i++)
{
if (diceResults[i] == 3)
{
threeKind = true;
for (int k = 0; k < diceResults.Length; k++)
{
if (diceResults[k] == 2)
{
fullHouse = true;
}
}
}
谢谢你的帮助 您的前几行代码不应该是:
for (int i = 0; i < diceResults.Length; i++)
{
if ((diceResults[i] == 2) || (diceResults[i] == 3))
{
onePair = true;
...
for(int i=0;i
如果你掷3个1和2个2,你将永远检测不到“第二对”,因为第一个循环只查看超过2的骰子总数。但是在你设定的点设置twoPair=true
是正确的。而且你实际上不需要嵌套循环来实现这一点
顺便说一句,我不确定Yahtzee的规则是什么,但4是一种被视为“两对”的类型吗?我个人认为,你不想在3种类型中检测一对,但无论如何。你可以只检查在这样的结果中是否已经有一对2。同样,执行多个for循环也是多余的
bool onePair = false;
bool twoPair = false;
bool threeKind = false;
bool fullHouse = false;
for (int i = 0; i < diceResults.Length; i++)
{
if (diceResults[i] >= 2)
{
if(onePair == true) {
twoPair = true;
}
onePair = true;
}
if (diceResults[i] >= 3)
{
threeKind = true;
for (int j = 0; j< diceResults.Length; j++)
{
if (diceResults[k] == 2)
{
fullHouse = true;
}
}
}
}
bool onePair=false;
bool-twoPair=false;
bool-threeKind=假;
bool-fullHouse=false;
for(int i=0;i=2)
{
if(onePair==true){
twoPair=true;
}
一对=真;
}
如果(结果[i]>=3)
{
三类=真实;
for(int j=0;j
关于变量设置为true或false,您需要显示更多的代码,以及在循环结束后,当满足条件时,您在哪里中断代码..?您是否使用调试器来逐步调试代码..?或者您只是编写代码并运行它..?您需要检查k!=i
或者您将始终获得tr对于fullHouse,编辑:对不起,这是不正确的。您正在明确检查==2
。我的评论不正确建议:您可以通过执行fullHouse=twoPair&&threeKind
来检查fullHouse,不是吗?…这是假设您总共是rollin 5个骰子。我在这个问题中找不到问题。您编写了一些代码,这是错误的,你不知道如何正确地编写代码,你正在尝试随机的东西,并希望它能工作。这不是一个问题。这也不是解决问题的好方法。你的问题是什么?谢谢,我想在完整的内部循环中添加twoPair=true就足够了,因此我的问题现在不相关了。不是irr正面,刚刚回答:-)如果您对答案感到满意,那么将其标记为这样是很好的。意思是,用户仍然需要选择三种类型中的一对,例如,如果用户已经完成了三种类型^这正是我要找的答案,我感谢您,我完全同意或者在寻找一双时,我也应该接受三或一种!那么也许你应该将答案标记为有用的答案;-)
bool onePair = false;
bool twoPair = false;
bool threeKind = false;
bool fullHouse = false;
for (int i = 0; i < diceResults.Length; i++)
{
if (diceResults[i] >= 2)
{
if(onePair == true) {
twoPair = true;
}
onePair = true;
}
if (diceResults[i] >= 3)
{
threeKind = true;
for (int j = 0; j< diceResults.Length; j++)
{
if (diceResults[k] == 2)
{
fullHouse = true;
}
}
}
}