Java的模数替代方案

4

我目前有以下这个语句:

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

然而,我的教授不喜欢在这个任务中使用取模。我想知道如何重写它,使它在没有取模的情况下工作。

感谢您提供任何帮助。


2
你能包含上下文中的其余代码吗? - Pokechu22
3
抛开您的教授个人偏好,模运算的使用方式被程序员广泛接受并理解。 - Greg Hewgill
一些周围的代码可能会使解决方案更加愉快。 - christopher
2个回答

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。 取模解决方案正是您在“现实世界”中看到的做法。

然而,在“现实世界”中,告诉您的教授他是一个“git”很少有好结果。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接