我目前有这个陈述
b = (b + 1) % a.length;
然而,我的教授并不喜欢这项作业的模数。 我想知道如何能够重写这个以使它在没有模数的情况下工作..
感谢任何帮助,谢谢。
答案 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;
}
}