Я работаю над программой, которая содержит 2-мерный массив символов 16x32. Я хочу сделать это, начиная с данного элемента в этом массиве, найти все элементы, которые имеют одно и то же значение (в моем случае пустое пространство) и которые горизонтально и/или вертикально связаны друг с другом.Java: найти в массиве 2d все смежные элементы с тем же значением, начиная с заданного элемента
Метод, который я использую, хранит индексы, которые он находит внутри другого массива, называемый toShow (public static int toShow[][] = new int[30][30];
). Проблема в том, что этот метод, похоже, не обрабатывается с правой стороны. Как ни странно, это, кажется, работает на других сторонах ... Вот пример:
X1 123
31 1X
211 24
1X1 112X
111 12X34
111•2X32X
1X113X211
В этом случае, начиная с элемента помечена как • метод должен хранить каждый «» характер и все соседние номера ... но это результат:
1••
1••
1•
1•
1•
1•
это, однако, как правило, работает, если он начинается в левом нижнем углу, даже если у него есть, чтобы повернуть направо!
Я не понимаю, что случилось с моим кодом ... В любом случае здесь является нечетным метод:
public static void getEmptySurrounding(int xcoord, int ycoord) {
if (toShow[xcoord][ycoord] == 1) {
return;
}
else {
toShow[xcoord][ycoord] = 1;
}
//DOWN
if((ycoord!=29) && ycoord + 1 < 16) {
if (board[xcoord][ycoord] == ' ') {
getEmptySurrounding(xcoord, ycoord + 1);
}
}
//RIGHT
if((xcoord!=15) && xcoord + 1 < 30) {
if (board[xcoord][ycoord] == ' ') {
getEmptySurrounding(xcoord + 1, ycoord);
}
}
//UP
if((ycoord!=0) && ycoord - 1 >= 0) {
if (board[xcoord][ycoord] == ' ') {
getEmptySurrounding(xcoord, ycoord - 1);
}
}
//LEFT
if((xcoord!=0) && xcoord - 1 >= 0) {
if (board[xcoord][ycoord] == ' ') {
getEmptySurrounding(xcoord - 1, ycoord);
}
}
}
Спасибо!