2015-06-17 4 views
0

У меня есть простой вопрос о заявлении «return». Пример в коде. Я всегда думаю, что isPrime (n) всегда «истинно». Потому что «return true»; находится в конце метода, он должен переписать предыдущие возвращения. Любой может помочь? Коды работают безупречно, что дает правильные результаты.JAVA - оператор возврата в цикле for

private boolean isPrime(int n) { 
    for(int i = 2; i < n; i++) { 
     if (n % i == 0) return false; 
    } 
    return true; 
} 

ответ

3

'return' выходит из функции, возвращающей возвращаемое вами значение. Последнее возвращение никогда не достигается, поэтому оно не будет возвращать значение по умолчанию.

+0

Спасибо. Поэтому не имеет значения, что «возврат» находится в цикле или нет. – Jeff

+0

Он делает, если он является простым, тогда он возвращает false, выходя из всей функции. break просто выйдет из цикла for (это всегда будет возвращать true, если вы это сделали). return более мощный возвращает значение родительской/вызывающей функции. – depperm

+0

Если это простое оно возвращает истину ... –

0

Нет, второй return не отменяет более ранний, он даже не достигнут. Контроль оставляет метод сразу после return.

(Единственный способ для этого не случилось бы иметь вторую return внутри finally блока. Это было бы действительно изменить возвращаемое значение. Но это настоятельно не рекомендуется)

0

Нет, как только вы вернетесь из метод, все готово. Если вы хотите убедить себя, вставьте заявления печати или запустите его через отладчик.

+0

я did.0-истинная 1-истинной 2-истинный 3-истинный 4-ложно 5-истинный 6-ложно 7-истинную 8-лжи 9-false 10-false – Jeff

0

Функции не выполняются полностью и затем возвращаются, они могут выйти в любой момент во время выполнения с помощью оператора return.

Итак, если число найдено до n % i == 0, то подпрограмма вернет значение false и выйдет.

Если функция завершила цикл for и никогда не разрешала оператор if, он возвращает true и завершает работу.

0

Если if (n % i == 0) истинно, он выполняет return false; и выйдет из метода. return true; будет достигнуто только в том случае, если return false; не может быть выполнен.

Смежные вопросы