2次元の16x32文字配列を含むプログラムで作業しています。私がしたいのは、この配列の特定の要素から始めて、同じ値(私の場合は空白 '')を共有し、互いに水平方向および/または垂直方向にリンクしているすべての要素を見つけることです。Java:指定された要素から始まる同じ値を持つすべての隣接要素を2次元配列で見つける
私が使用している方法は、と表示されている別の配列内にあるインデックスを格納します。(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);
}
}
}
ありがとうございました!