2014-10-20 78 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; 
    } 
}