0

Этот бит кода должен добавить письмо к одной плитке, но так, как он в настоящее время написан, он добавляет письмо нескольким фрагментам. Как это исправить? Благодарю.Петля, добавляющая письмо к плитке

public void add(char c) { 
     for (int row = 0; row < 4; row++){ 
      for (int col = 0; col < 4; col++){ 
       if (tiles[row][col] != null && tiles[row][col].getLetter() == null){ 
        tiles[row][col].setLetter(letters.pop()); 
        notifyObservers(); 
        break; 
       } 
      } 
      } 
     } 

ответ

0

break; только выходит из внутреннего цикла: for (int col = 0; col < 4; col++)
Так он по-прежнему работает цикл Outter: for (int row = 0; row < 4; row++) и, следовательно, повторно входит во внутреннюю петлю снова

Попробуйте заменить break; с return;, чтобы выйти из add(char c) функции полностью. Таким образом, предотвращение любых дальнейших циклических итераций

public void add(char c) { 
    for (int row = 0; row < 4; row++){ 
     for (int col = 0; col < 4; col++){ 
      if (tiles[row][col] != null && tiles[row][col].getLetter() == null){ 
       tiles[row][col].setLetter(letters.pop()); 
       notifyObservers(); 
       return; 
      } 
     } 
    } 
} 
+0

Совершенно спасибо! – inSo23