2013-06-10 2 views
-3

Я довольно новичок в Java. У меня возникли проблемы с пониманием этих строк кода. Может ли кто-то сломать это для меня в основном?Понимание Java modulo?

Код:

private boolean isEven(int even) { 
    return even % 2 == 0; 
} 

private boolean canMove(int roll) { 
    int avenues = isEven(this.getStreet()) ? this.getAvenue() : 4 - this 
      .getAvenue(); 
    return this.getStreet() * 5 + avenues + roll < 25; 
} 
+1

У вас возникли проблемы с оператором модуля или 'canMove' кода? – djechlin

+0

Что вы не понимаете? Что вы пытались это понять? Такие вопросы, особенно без каких-либо признаков проделанной работы, обычно не приветствуются на SO. – Dariusz

ответ

2

Think оператора модуля (% здесь в Java), как оператор "остаточным". Это дает остаток при делении первого числа на второе.

Если остаток при делении на 2 равен нулю, то число равно (true), иначе это нечетно (false).

Затем в результате метода используется либо this.getAvenue(), либо 4 - this.getAvenue() для переменной avenues.

Затем проспекты используются для вычисления другой суммы, которая сравнивается с 25. Если эта сумма меньше 25, возвращается true; Осталось false.

+0

как насчет последней строки "return this.getStreet() * 5 + avenues + roll <25;"? – user2472469

1

ISeven:

Если значение even делится на 2 не имеет остаток, затем возвращает истину; else, верните false.

canMove:

Если текущая улица (this.getStreet()) ISEVEN, а затем использовать текущую авеню (this.getAvenue()); иначе используйте 4 - текущую авеню. Результат этого сохраняется в avenues.

Если текущее время улицы 5 + avenues + значение рулона меньше 25, верните true; else возвращает false;

Переписан, это может быть:

private boolean canMove(int roll) { 
    // create the avenues variable and initialize it with a value 
    int avenues = 0; 

    // if this.getStreet() is even, then avenues = this.getAvenue() 
    if (isEven(this.getStreet()) { 
     avenues = this.getAvenue(); 

    // otherwise, avenues = 4 - this.getAvenue() 
    } else { 
     avenues = 4 - this.getAvenue(); 
    } 

    // if this.getStreet() * 5 + avenues + roll is less than 25, then return true 
    if (this.getStreet() * 5 + avenues + roll < 25) { 
     return true; 
    } 

    // otherwise, return false 
    return false; 
} 
+0

И что делает 4-й, доза, она просто занимает 4 от текущей проспекта? – user2472469

+0

@ user2472469 Это «4 минус текущая авеню». Если текущая авеню равна «1», эквивалентный оператор будет равен «4-1», что, очевидно, «3». – GamerJosh