2011-04-28 183 views
2

我正在使用visual studio c#win窗体。 。 。我有文本框的二维数组和本人有效解决数独的另一个二维数组我想比较文本框的文字数独阵,但它不是working.Here是我的代码:如何比较两个二维数组

 private void Isvalid() 
     { 
      for (int i = 0; i < 4; i++) 
       for (int j = 0; j < 4; j++) 
        if (copy[i, j] == textbox[i, j].Text) 
         isvalid = true; 


     } 
     private void check() 
     { 
      Isvalid(); 
      if (isvalid) 
       MessageBox.Show("NO"); 
      else 
       MessageBox.Show("YES"); 

     } 

谁能plz帮助我。 。 。 THANx提前。 。 。向所有回答的人致谢。 。 。

回答

1

你不(重新)设置isvalid变量设置为false,如果数组是不相等的。

您通过共享变量传递Isvalid方法的结果。如果您将比较结果作为方法结果传递,您的代码将会更清晰。现在

private bool Isvalid() 
{ 
    for (int i = 0; i < 4; i++) { 
     for (int j = 0; j < 4; j++) { 
      if (copy[i, j] != textbox[i, j].Text) { 
       return false; // If one is not equal, the two arrays differ 
      } 
     } 
    } 
    return true; 
} 

可以测试:

if (Isvalid()) { 
    // your code here 
} 

如果传递两个数组作为参数更妙会。

+0

当我按下按钮时没有做任何事情,它显示消息是的 – Aenu 2011-04-28 10:26:46

+0

我想改变那些无与伦比的文本框的颜色。 。你可以帮我 – Aenu 2011-04-28 10:42:30

1

我会穿上

if (copy[i, j] == textbox[i, j].Text) 

线断点,直观地看到,如果你在文本框中看到什么就是什么数组包含。 这可能与需要进行不区分大小写的比较一样简单。

0

试试这个:

private void Isvalid() 
{ 
    isvalid = true; 
    for (int i = 0; i < 4; i++) 
     for (int j = 0; j < 4; j++) 
      if (copy[i, j] != textbox[i, j].Text) 
      { 
       isvalid = false; 
       return; 
      } 
} 

在你的日常,你设置的isValid为true,每当一个号码相匹配。如果数字不匹配,您宁愿将其设置为false。

1

文本框[I,J]。文本

在这里你需要在文本框中矩阵比较之前的值转换为整数。这将解决问题。

还需要设置成false无效,并使其真正退出循环后