2017-10-09 3 views
0

J'ai une boucle assez simple, que nous avons tous utilisée des milliers de fois, mais je reçois une erreur bizarre. Comme je doute qu'il y ait un défaut en C# .net noyau, je cherchais l'aide avec mon erreur:C# .net core 2.0, la boucle est en train de compter

 public Int2DBoard GetNonMatchingSquaresThisBoardOnly(Int2DBoard other) 
    { 
     // create a tempBoard: 
     Int2DBoard tempBoard = new Int2DBoard("Different"); 
     // create a match bool to hold our result: 
     bool match = false; 
     // match this board items against other board 
     for (int i = 0; i < board.Count; i++) 
     { 
      for (int j = 0; j < other.board.Count; i++) 
      { 
       if (other.board[j] == board[i]) 
       { 
        match = true; 
        break; 
       } 
      } 
      if (!match) 
      { 
       tempBoard.board.Add(board[i]); 
      } 
     } 
     return tempBoard; 
    } 

Quand je lance, je reçois un hors d'erreur de limites, de vérifier ce que j'obtenir les informations suivantes:

i = 2; board.Count = 2;

Comment est-ce possible? La fonction indique clairement < board.Count. Je suis sûr de manquer quelque chose d'évident, mais je ne peux tout simplement pas le voir. Toute aide serait appréciée.

Voici une capture d'écran du débogueur montrant les valeurs:

Overflowing loop

Répondre

3

Vous incrémentez i au lieu de j dans la boucle intérieure:

for (int j = 0; j < other.board.Count; i++) 

Modifier à:

for (int j = 0; j < other.board.Count; j++) 
+0

Merci, je savais que ça allait être quelque chose que je ne pouvais pas voir pour le code .. – SoulRider

2

Vous avez i++ dans la boucle interne au lieu de j++