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