2015-10-20 3 views
1

Я пытаюсь очистить код для класса и при создании метода столкновений Eclipse продолжает давать мне ошибки, что «левая сторона задания должна быть разрешена переменной. Эта ошибка встречается во всех моих операторах if. эта проблема, вероятно, очень простой, но очень похожий код работает для моих коллег и я не могу показаться, чтобы решить, почему мое было бы иначе. Спасибо!Говорит, что левая сторона должна быть разрешена переменной?

private GObject getCollidingObject (double x, double y) { 
     AudioClip bounceClip = MediaTools.loadAudioClip("bounce.au"); 
     if (getElementAt(x, y) =! null) { 
      return (getElementAt(x, y)); 
      bounceClip.play(); 
     } 
     else if (getElementAt(x + 2 * BALL_RADIUS, y) =! null) { 
      return(getElementAt(x + 2 * BALL_RADIUS, y); 
      bounceClip.play(); 
     } 
     else if (getElementAt(x + 2 * BALL_RADIUS, y + 2 * BALL_RADIUS) =! null) { 
      return(getElementAt(x + 2 * BALL_RADIUS, y + 2 * BALL_RADIUS)); 
      bounceClip.play(); 
     } 
     else if (getElementAt(x, y + 2 * BALL_RADIUS) =! null) { 
      return(getElementAt(x, y + 2 * BALL_RADIUS)); 
      bounceClip.play(); 
     } else { 
      return null; 
     } 
+3

Возможно, вы имели в виду '! =' Вместо '=!'? – rgettman

+0

В качестве побочного примечания 'bounceClip.play()' никогда не будет выполняться, потому что вы «возвращаете» прямо перед его вызовом. –

ответ

0

=! интерпретируется как этот

<something> = !(boolean) 
//var here = negation(boolean) 

И у вас есть этот код:

getElementAt(x, y) =! null 

Таким образом, ошибка компилятора.

Исправьте его, используя другой оператор !=.

После этого, другая проблема здесь:

return (getElementAt(x, y)); 
bounceClip.play(); 

Это поднимет другую ошибку компилятора, поскольку не может быть больше кода для выполнения после return. Не знаю, как это исправить, потому что я не знаю вашего реального намерения здесь.

1

Это должно быть != и не =!

Ваш condition должен быть:

if (getElementAt(x, y) != null) {...} 

else if (getElementAt(x + 2 * BALL_RADIUS, y) != null) {...}

и так далее.

1

=! не является «нет» (!=). =! - фактически два оператора = и !. Или другими словами: ваш код пытается инвертировать null и назначить обратное вызову метода.

Если вы хотите проверить наличие «нет», используйте !=.

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