2011-04-28 189 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無效,並使其真正退出循環後