2014-10-20 3 views
4

я в настоящее время это заявление,Modulo альтернативы для Java

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

Однако мой профессор не любит по модулю для этого задания. Мне было интересно, как я смогу переписать это, чтобы оно работало без модуляции.

Любая помощь приветствуется, спасибо.

+2

Можете ли вы включить остальную часть кода в контекст? – Pokechu22

+3

Ваши личные предпочтения вашего профессора в стороне, что использование modulo широко распространено и понято программистами во всем мире. –

+0

Некоторые из окружающего кода могут сделать более приятное решение. – christopher

ответ

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 - это именно то, как вы видите, что это делается «в реальном мире».

Однако в «реальном мире», рассказывающем вашему профессору, он редко работает.

int b = 0; 
... 
while(!someExitCondition()) { 
    ... 
    doSomething(a.get(b)); 
    if (b + 1 < a.length) { 
    b++; 
    } else { 
    b = 0; 
    } 
} 
Смежные вопросы