Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 循环不识别语句_C#_Arrays - Fatal编程技术网

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;
                }
            }
        }
    }