2015-06-07 101 views
3

我面臨以下問題:爪哇:2D陣列 - 使它「圓環」像

我有大小中號 X Ñ正方形的板。 在java中製作它的最好方法是什麼,以便在出現超出邊界(或帶有負值)的座標時,它將從板的另一側返回平方?我正在尋找一些切肉刀數學運用。可能是模數運算符,但我希望它能用於負值。如何做到這一點?

例如:

當M = N = 10

//Pseudocode of course 
int[10][10] board 

//Counting elements from 0, so 10 would normally generate array OOB exception 
//I want it to work like this: 
board[-1][10] == board[9][0] 
+0

這可能有助於:[數學需要-180和180之間的數字](http://stackoverflow.com/a/30278373) – Tom

回答

9

你會使用模運算符。使用(任意大正/負整數)的常見公式是:

(n % SIZE + SIZE) % SIZE 

取而代之的卻塞滿這些公式的代碼,我將其封裝在一個函數:

int getCell(int i, int j) { 
    return board[(i % M + M) % M] 
       [(j % N + N) % N]; 
} 
+0

您的代碼缺少';' –

+1

謝謝。修正:-) – aioobe