-1
我在java中 (例如)一個二維數組如何看待Java數組的相對邊緣,好像他們是相鄰
0|0|0|0
1|1|1|0
0|1|0|1
我需要創建代碼,如果說在廣場周圍的項目是什麼,做點什麼。我可以做到這一點,但我有一個問題。
如果項目位於邊緣上,則數組需要有效包裝,以便頂行緊挨着底行。
有誰知道如何做到這一點?
我在java中 (例如)一個二維數組如何看待Java數組的相對邊緣,好像他們是相鄰
0|0|0|0
1|1|1|0
0|1|0|1
我需要創建代碼,如果說在廣場周圍的項目是什麼,做點什麼。我可以做到這一點,但我有一個問題。
如果項目位於邊緣上,則數組需要有效包裝,以便頂行緊挨着底行。
有誰知道如何做到這一點?
首先,確定您對4連接鄰域還是8連接感興趣。 4連接的鄰域是單元格上方,左側,右側和下方的單元格。 8連接的鄰域是相同的單元加對角線。
現在,您只需要一種方法來計算特定單元格的索引。
下面是計算另一個左側列索引的示例。
int getLeftIndex(int index, int width) {
int rv = index - 1;
if (index < 0) { index = width - 1; }
return rv;
}
類似的方法可以計算出列索引到右邊,或行索引的上方或下方。
調用兩種方法來獲取適當的行和列。
您也可以將其推廣以提供一種方法,可以在任一方向接受增量,以便您可以遍歷單元格。
public static int getCoord(int from, int delta, int size) {
return Math.floorMod(from + delta, size); // Requires Java 8
}
Java也提供一個模運算符,但它won't give you the results you want。
這裏的遍歷各地另一個8連接的電池的一個例子:
public static void main(String[] args) {
int x = 0;
int y = 0;
int size = 4;
for (int i = -1; i <= 1; ++i) {
for (int j = -1; j <= 1; ++j) {
if (i != 0 || j != 0) {
int xij = getCoord(x, i, size);
int yij = getCoord(y, j, size);
System.out.println("x=" + xij + " y=" + yij);
}
}
}
}
尚不清楚爲什麼它需要包裝。什麼是「正在做某事」。 – RealSkeptic
你似乎自相矛盾,你說你可以在廣場周圍找到物品,但是說明你找不到邊上的物品?如何找到廣場周圍的東西,並找到不同的邊緣項目? –
等等...你問你如何對待陣列,好像相對的邊緣相鄰? –