2014-10-20 72 views
4

我現在有這個說法模替代的Java

b = (b + 1) % a.length;

但是我的教授是不是喜歡模這一任務的。 我想知道如何能夠重寫這個,使其工作沒有模數..

任何幫助表示讚賞,謝謝。

+2

您能否包含上下文的其餘代碼? – Pokechu22 2014-10-20 01:08:19

+3

除了您的教授的個人偏好之外,使用模數已被各地的程序員廣泛接受和理解。 – 2014-10-20 01:11:38

+0

一些周圍的代碼可能會使更愉快的解決方案。 – christopher 2014-10-20 18:03:38

回答

2

試試這個,它有相同的效果,並避免使用模。恕我直言,基於模解決方案是首選,這是一個恥辱,你的老師不喜歡它:

// assuming that `b` is an integer 
if (b + 1 >= a.length) { 
    b = ((b+1) - ((b+1)/a.length * a.length)); 
} else { 
    b++; 
} 
1

如果問題的背景下,你正試圖使「B」作爲索引到的東西固定長度,你應該增加'b',直到它在'b'被設置回0的長度邊界。你的Modulo解決方案正是你在「現實世界」中看到的。

然而,在「現實世界」告訴你的教授他是一個git很少成功。

int b = 0; 
... 
while(!someExitCondition()) { 
    ... 
    doSomething(a.get(b)); 
    if (b + 1 < a.length) { 
    b++; 
    } else { 
    b = 0; 
    } 
}