1

我在java中遇到空指针错误的问题,我正在尝试制作一个突破游戏,我知道问题出在哪里。

    GObject collider = getElementAt( ballX, ballspeed);

    if(collider.equals(paddle) && collider){
        ballspeed = -ballspeed;
    }

当 if 语句为 null 时,程序会收到错误。

我也试过这个,但没有运气

    GObject collider = getElementAt( ballX, ballspeed);

    if(collider.equals(paddle) && collider != null){
        ballspeed = -ballspeed;
    }
4

5 回答 5

4

尝试其他方式:

if(collider != null && collider.equals(paddle) ){
        ballspeed = -ballspeed;
    }

阅读有关Java 中运算符的更多信息

于 2013-02-06T20:15:47.997 回答
1

就像其他人说的:

if(collider != null && collider.equals(paddle) ) {

应该做的伎俩。所以这种形式的表达:

if (condition1 && condition2)

仅当条件 1 为真时,条件 2 才会被评估。在这种情况下,如果条件 1 为空,则不会计算条件 2,这将防止空指针异常。

于 2013-02-06T20:36:25.953 回答
1

null在尝试调用之前,您必须执行-check equals(..)。条件从左到右评估:如果第一个为假,则根本不评估其他条件,因为&&不再独立于其他条件为真。

  if(collider != null && collider.equals(paddle)){
    ballspeed = -ballspeed;
  }

如果您对评估顺序感到不安全,您还可以执行以下操作:

  if(collider != null){
      if(collider.equals(paddle)){
          ballspeed = -ballspeed;
      }
  }
于 2013-02-06T20:16:31.753 回答
0

尝试将第二个 if 语句的顺序更改为

if(collider != null && collider.equals(paddle))

如果语句从左到右求值,如果 collider 为空,则第一条语句的求值结果为 false,第二条语句将不被执行。或者你可以做类似的事情

if(collider == null) {
    //do nothing or attempt to get non null collider
}
else if(collider.equals(paddle))
{
   ballspeed = -ballspeed;
}
于 2013-02-06T20:20:25.173 回答
0

尝试这个

if(collider != null  &&  collider.equals(paddle) )  

这应该有效。

于 2013-02-06T20:24:35.330 回答