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