2013-04-05 4 views
2
public boolean isOdd (int value) { 
    if ((value % 2)== 0){ 
     return false; 
    } else if ((value % 2) > 0){ 
     return true; 
    } 
} 

Я получаю сообщение об ошибке сказав: личное логическое ISODD (INT значение) бросает исключение { ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^ Этот метод должен возвращать результат типа булевойКак вернуть boolean в Java?

Я пытался делать:

public boolean isOdd (int value) { 
    boolean isOdd = ((value % 2) > 0); 
    return true; 
} 

public boolean isEven (int value) { 
    boolean isEven = ((value % 2) > 0); 
    return true; 
} 

и это только возвращает истину, как выход.

У меня нет понятия, что я делаю неправильно здесь!

+0

Это потому, что у вас нет 'else' пункт. –

+0

Возможный дубликат [Компилятор жалуется на «отсутствующий оператор возврата», даже если невозможно достичь условия, в котором будет указано выражение возврата] (http://stackoverflow.com/questions/8863676/compiler-complains-about-missing-return -statement-even-but-it-is-impossible) – femtoRgon

ответ

7

Ваш первый фрагмент кода вызывает ошибку, потому что вы не удовлетворяли требованиям к делу else. Здесь вам не нужен else if, так как вы хотите, чтобы второе условие выполнялось во всех случаях, когда оператор if не выполняется. Попробуйте изменить его:

public boolean isOdd (int value) { 

    if ((value % 2)== 0){ 
     return false; 
    } 
    else { return true; } 

} 

или более просто:

public boolean isOdd (int value) { 
    return ((value % 2) != 0); 
} 
+0

Ох, я люблю тебя! Это сработало спасибо! – Kimmm

+1

В общем случае сообщение об ошибке должно быть обработано сначала как указание на то, что в логике метода существует проблема. Существует способ достижения конца метода, которого не ожидал программист. Поиск и устранение этой проблемы, как и в этом ответе, часто приводит к более простому, более чистому коду, чем рефлексивное добавление предложения else или return. –

+0

Хм, я понимаю, что второй способ проще, чем первый, но что это такое! должно быть? И как может ((значение% 2)! = 0) определить, следует ли возвращать true или false? – Kimmm

5

Вам нужно добавить значение возврата по умолчанию в первый фрагмент, например, тот, который не находится внутри какого-либо if.

+0

Я не знаю, как это сделать, но я решил проблему в любом случае, спасибо за ответ! – Kimmm

+0

Посмотрите на сообщение Стохастически, чтобы узнать, как установить значение по умолчанию. Это очень важно для вас, потому что все методы Java (кроме 'void') должны возвращать значение по умолчанию. – 2013-04-05 16:13:14

0
public boolean isEven (int value) { 
    return value%2==0; 
} 

public boolean isOdd (int value) { 
    return value%2!=0; 
} 
1

Что делать, если ((value % 2) < 0)? Вы не пользуетесь этой возможностью, и нет пути возврата, если это произойдет.

2

Вобще

public boolean isOdd(int value) { 
    return (value % 2) != 0; 
} 
2

вам нужен другой или, по крайней мере, еще один возврат. Если ни одно из ваших операторов if не соответствует, то ничего не будет возвращено, и это не разрешено.

public boolean isOdd (int value) { 

if ((value % 2)== 0){ 
return false; } 

else if ((value % 2) > 0){ 
return true; } 

return true; 

} 

Вы могли бы заменить метод с описанным ниже методом:

public boolean isOdd (int value) { 
return (value % 2) != 0; } 
2

Ошибка компиляции уйдет, если вы добавили else заявление, т.е.

if ((value % 2)== 0) { 
    return false; 
} else if ((value % 2) > 0){ 
    return true; 
} else { 
    return ??; // default value 
} 
+0

'-true' или' FileNotFound'? –

0

Вы также можете сделать:

public boolean isOdd (int value) { 
    if ((value % 2) == 0) 
     return false; 
    return true; 
} 
Смежные вопросы