C# 我有一个二维数组,如果一行中有3个(或更多)元素相邻,我想返回true,

C# 我有一个二维数组,如果一行中有3个(或更多)元素相邻,我想返回true,,c#,c#-4.0,facebook-c#-sdk,C#,C# 4.0,Facebook C# Sdk,我的问题是if语句不起作用,我不知道如何解决这个问题,当我运行代码时,总是给我一个行分数,这意味着有三个或更多的元素是相同的,但这是不正确的。 关于这个问题的更多细节 我有一个二维数组,如果一行中有3个(或更多)元素相邻,我想返回true, 问题是: 如果存在,则该方法返回true 一行中有3个(或更多)符号相邻,否则返回false。 要确定“一行中有3行”,请检查所有行(一行一行),并在每一行中记住 “当前糖果”并将计数器设置为1。如果下一个糖果与下一个相同 上一个)然后增加计数器,否则将计数

我的问题是if语句不起作用,我不知道如何解决这个问题,当我运行代码时,总是给我一个行分数,这意味着有三个或更多的元素是相同的,但这是不正确的。 关于这个问题的更多细节

我有一个二维数组,如果一行中有3个(或更多)元素相邻,我想返回true, 问题是: 如果存在,则该方法返回true 一行中有3个(或更多)符号相邻,否则返回false。 要确定“一行中有3行”,请检查所有行(一行一行),并在每一行中记住 “当前糖果”并将计数器设置为1。如果下一个糖果与下一个相同 上一个)然后增加计数器,否则将计数器重置为1和 再次设置“当前糖果”。如果计数器变为3,则可以返回true。 → 检查一行中是否有(>=)3个相邻符号

这是我的方法

我怎样才能改进它

bool ScoreRowPresent(RegularCandies[,] playingField)
        {

            for (int i = 0; i < playingField.GetLength(0); i++)
            {
                int counter = 1;
                RegularCandies candies = RegularCandies.JellyBean;

                for (int x = 1; x < playingField.GetLength(1); x++)
                {
                    if (candies==playingField[i,0])
                    {
                        counter++;

                    }
                    else
                    {
                        counter = 1;
                        candies = playingField[i, x];
                    }
                    if (counter >= 3)
                    {
                        return true;

                    }

                }

            }
            return false;
        }
bool ScoreRowPresent(常规糖果[,]运动场)
{
for(int i=0;i=3)
{
返回true;
}
}
}
返回false;
}
试试这个:

bool ScoreRowPresent(RegularCandies[,] playingField)
{
    for (var row = 0; row < playingField.GetLength(0); row++)
    {
        var candyToCount = playingField[row, 0];

        var counter = 1;

        for (var column = 1; column < playingField.GetLength(1); column++)
        {
            if (playingField[row, column] == candyToCount)
            {
                counter++;
            }
            else
            {
                counter = 1;
                candyToCount = playingField[row, column];
            }

            if (counter >= 3)
            {
                return true;
            }
        }
    }

    return false;
}
bool ScoreRowPresent(常规糖果[,]运动场)
{
对于(var row=0;row=3)
{
返回true;
}
}
}
返回false;
}
请让我知道这是否有效。

试试这个:

bool ScoreRowPresent(RegularCandies[,] playingField)
{
    for (var row = 0; row < playingField.GetLength(0); row++)
    {
        var candyToCount = playingField[row, 0];

        var counter = 1;

        for (var column = 1; column < playingField.GetLength(1); column++)
        {
            if (playingField[row, column] == candyToCount)
            {
                counter++;
            }
            else
            {
                counter = 1;
                candyToCount = playingField[row, column];
            }

            if (counter >= 3)
            {
                return true;
            }
        }
    }

    return false;
}
bool ScoreRowPresent(常规糖果[,]运动场)
{
对于(var row=0;row=3)
{
返回true;
}
}
}
返回false;
}

请让我知道这是否有效。

您的代码是否遇到问题,或者您是想继续询问吗?@Xerilo是的,我的代码不起作用,我不知道我在哪里犯了错误。这就是为什么我要共享我的代码,以便有人能帮助我,并告诉我哪里犯了错误!请回答问题并添加有关问题的详细信息。你有例外吗?你有什么意外的行为可以解释吗?@Mayez,你能分享一下RegularCandies声明吗?乍一看,我相信这个链接会对你有所帮助,你的代码遇到问题了吗,还是你想继续问?@Xerilio是的,我的代码不起作用,我不知道我在哪里犯了错误,这就是为什么我要分享我的代码,以便有人能帮助我,告诉我哪里犯了错误!请回答问题并添加有关问题的详细信息。你有例外吗?你是否有一些意想不到的行为可以解释?@Mayez,你能分享一下RegularCandies声明吗?首先,我相信这个链接会帮助你,添加
maxAdjacentCandyCount
的目的是什么<代码>计数器应该足够了:
如果(计数器>=3)返回true@Xerilio你说得对!谢谢你提醒我。在本地,当最大相邻列数返回时,我正在尝试一种方法,但我复制了错误的代码(现已修复,答案已更新)。添加
maxandjacentcandycount
的目的是什么<代码>计数器
应该足够了:
如果(计数器>=3)返回true@Xerilio你说得对!谢谢你提醒我。在本地,当返回最大相邻列数时,我正在尝试一种方法,但我复制了错误的代码(现已修复,答案已更新)。