Таким образом, причина, по которой он не скомпилируется, заключается в том, что your = не возвращает логическое выражение. == будет, но это все-таки не то, что вам нужно, поскольку вы хотите проверить, одинаковое ли содержимое String, а не один и тот же объект, поэтому используйте .equals.
Но, нет, я думаю, что вы не хотите зависеть от строк для определения местоположения. Что делать, если вы хотите заменить карту? И зачем просматривать все, когда вам это не нужно?
Скорее, если я какое-то число от 1 до 20, определите соответствующую точку в массиве с помощью square[(i-1)/5][(i-1)%5]
Это должно обойти проблему, которую вы с соответствующими строками.
Так, например, ваш конструктор становится:
public GameBoard() {
square = new String[4][5];
for (int i=1; i<=20;i++){
square[(i-1)/5][(i-1)%5]=""+i;//initialize with 1 to 20 if you like
}
и userLocation
является int
.