正在获取等于的NullPointerException



我在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;
    }

尝试其他方式:

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

阅读更多关于java 中运算符的信息

就像其他人说的那样:

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

应该做到这一点。因此,这种形式的表达式:

if (condition1 && condition2)

只有当条件1为true时,条件2才会被求值。在这种情况下,如果条件1为null,则不会计算条件2,这将防止null指针异常。

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

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

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

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

试试这个

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

这应该行得通。

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

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

如果从左到右计算语句,如果collider为null,则第一个语句的计算结果将为false,第二个语句将不会执行。或者你可以做一些类似的事情

if(collider == null) {
    //do nothing or attempt to get non null collider
}
else if(collider.equals(paddle))
{
   ballspeed = -ballspeed;
}

相关内容

  • 没有找到相关文章

最新更新