2015-07-08 5 views
0

это мой код.Этот метод должен возвращать результат типа boolean (Java)

boolean checkHit2() { 
    if (cx < 0 || cx >= 640) {return true;} 
    if (cy < ground[(int)cx]) {return false;} 
    if (cx < blue + 15 && cx > blue - 15) { 
     score = (int)score + 1; 

Что я делаю неправильно? он дает мне сообщение об ошибке «Этот метод должен возвращать результат типа boolean». Пожалуйста помоги.

+3

Этот код даже не будет _compile_. Можете ли вы переписать полный метод? –

+1

Конечно, он не компилируется, вот что спрашивает OP, почему он/она получает ошибку «Этот метод должен возвращать результат типа boolean», когда он/она пытается его скомпилировать. –

ответ

2

«Этот метод должен возвращать результат логического типа»

означает, что ваш метод должен возвращать значение boolean для каждого случая. В настоящее время он вернет boolean, если одно из ваших условий - true. Как насчет, если ни одно из ваших условий if равно true? В этом случае компилятор не сможет вернуть ничего вызывающему методу. Так что компилятор говорит вам добавить заявление return для метода для каждого случая, независимо от его состояния. Вы должны добавить return false в конце метода.

1

В вашем методе вы должны указать return переменную в каждом случае (для каждого оператора if), в данном случае булево.

Пример:

boolean checkHit2() { 

    if (cx < 0 || cx >= 640) {return true;} 
    if (cy < ground[(int)cx]) {return false;} 
if (cx < blue + 15 && cx > blue - 15){ 
    score = (int)score + 1; 
    return false; 
} 

Кроме того, только чтобы очистить ваш код немного, фигурные скобки не нужны, если содержимое блока только одна строка. Например, вы можете использовать:

boolean checkHit2() { 

    if (cx < 0 || cx >= 640) return true; 
    if (cy < ground[(int)cx]) return false; 
if (cx < blue + 15 && cx > blue - 15){ 
    score = (int)score + 1; 
    return false; 
} 

Функционально они действуют одинаково. Это просто полезный ярлык для очистки вашего кода :).

В этом примере я просто вернул false, потому что я застрахован от функциональности вашей программы или того, как вы хотите, чтобы она работала. Вы можете вернуть значение на основании заявления if или else и т. Д., Но это зависит от вас и от того, что вы хотите от своей программы.

Чтобы узнать больше о return, click here

-1

Эта линия:

<b>if (cx < blue + 15 && cx > blue - 15){ </b> 

Должен быть изменен на

<b>if((cx < (blue + 15)) && (cx > (blue -15))){</b> 

, но я думаю, вы должны переместить Comparation вне как:

int bluePlus = blue + 15; 
int blueMinus = blue - 15; 
if(cx < bluePlus && cx > blueMinus){ 

EDIT: Ошибка означает, что вы пропустите, чтобы возвращать boolean в конце концов. После, если

if(cx < bluePlus && cx > blueMinus){ 

необходимо добавить возврат к результатам. Пожалуйста, проигнорируйте первый комментарий.

+0

Этот ответ просто недействителен. Он не затрагивает ошибку, отброшенную вообще. – UnknownOctopus

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