Java的Modulo替代品

时间:2014-10-20 01:07:27

标签: java modulo

我目前有这个陈述

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

然而,我的教授并不喜欢这项作业的模数。 我想知道如何能够重写这个以使它在没有模数的情况下工作..

感谢任何帮助,谢谢。

2 个答案:

答案 0 :(得分:2)

试试这个,它具有相同的效果并避免使用模数。恕我直言,基于模数的解决方案是首选,你老师不喜欢它是一种耻辱:

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

答案 1 :(得分:1)

如果在问题的上下文中,你试图使'b'作为一个固定长度的索引,你应该增加'b'直到它在'b'被设置的长度边界处回到0. You Modulo解决方案正是您在“现实世界中”看到的。

然而,在“现实世界”中告诉你的教授,他是一个很少有人可以解决的问题。

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