Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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# 在2D中查找重复在运行时不起作用,但在调试时起作用_C#_Arrays_Debugging_Multidimensional Array - Fatal编程技术网

C# 在2D中查找重复在运行时不起作用,但在调试时起作用

C# 在2D中查找重复在运行时不起作用,但在调试时起作用,c#,arrays,debugging,multidimensional-array,C#,Arrays,Debugging,Multidimensional Array,代码的目的是在每个水平行中查找数字1-9的重复。当然,当我让它工作的时候,我会让它在垂直的行上工作 这是我的代码,我认为在所有水平行的2D数组中查找重复应该是一个有效的代码 我的数独解题代码有一个非常奇怪的问题,当我调试时它似乎可以工作,但当我运行它时,它总是说它找到了一个重复的代码。是我错过了什么,还是代码中的逻辑完全错了,不应该是这样的,6个小时后我完全迷路了 代码如下: public bool UniqRowX(Square rutor) { int duplicate = 0;

代码的目的是在每个水平行中查找数字1-9的重复。当然,当我让它工作的时候,我会让它在垂直的行上工作

这是我的代码,我认为在所有水平行的2D数组中查找重复应该是一个有效的代码

我的数独解题代码有一个非常奇怪的问题,当我调试时它似乎可以工作,但当我运行它时,它总是说它找到了一个重复的代码。是我错过了什么,还是代码中的逻辑完全错了,不应该是这样的,6个小时后我完全迷路了

代码如下:

public bool UniqRowX(Square rutor)
{
    int duplicate = 0;

    for (int row = 0; row < 9; row++ )
    {
        for (int find_duplicate_nummber = 1; find_duplicate_nummber < 10; find_duplicate_nummber++)
        {
            for (int col = 0; col < 9; col++)
            {
                if(rutor.SudokuArray[row, col].nummer==find_duplicate_nummber)
                {
                    duplicate = duplicate + 1;
                }
                if(duplicate>1)
                {
                    MessageBox.Show("Duplicate!");
                    return false;
                    break;
                }
            }
        }
    }
    MessageBox.Show("No Duplicate");
    return true;
}
public bool UniqRowX(方形车辙)
{
重复整数=0;
对于(int行=0;行<9;行++)
{
对于(int find_duplicate_number=1;find_duplicate_number<10;find_duplicate_number++)
{
for(int col=0;col<9;col++)
{
if(rutor.SudokuArray[row,col].nummer==find\u duplicate\u number)
{
重复=重复+1;
}
如果(重复>1)
{
MessageBox.Show(“复制!”);
返回false;
打破
}
}
}
}
MessageBox.Show(“无重复”);
返回true;
}

根据您的逻辑,似乎应该在每次通过列后将“duplicate”变量设置为0。

为什么会有Thread.Sleep(100)?您是否涉及多线程?您应该创建一个适当的数据模型,其中
Square
类表示数独板中的单个单元格,而不是整个板,并且还包含
数字属性,您可以使用LINQ而不是500年前那可怕的
for
循环来查询这些属性。@ThomasW。我把它取了下来,和这件事无关code@HighCore这是我的第一个“真正的”面向对象的项目,我从来没有与LINQ合作过,所以我不知道它是如何工作的,我在google上找到的几乎所有示例都是针对.ASP的,没有太多帮助