-7
public Boolean DetectPlayerAndGround1Collision2(/*snip*/)
{            
    if (/*snip*/)
    {   
        if (/*snip*/) { return true; }
        else if (/*snip*/) { return true; }
        else if ((/*snip*/) { return true; }
    }
}
4

5 回答 5

5

在 else 情况下您未能返回值:

public Boolean DetectPlayerAndGround1Collision2(/*snip*/)
{            
    if (/*snip*/)
    {   
        if (/*snip*/) { return true; }
        else if (/*snip*/) { return true; }
        else if ((/*snip*/) { return true; }
        else{return false;}
    }
    else
    {
       return false;
    }
}
于 2012-11-28T21:15:23.643 回答
3

我建议执行以下操作:

public Boolean DetectPlayerAndGround1Collision2(/*snip*/)
{
    bool result = false;            
    if (/*snip*/)
    {   
        if (/*snip*/) { result = true; }
        else if (/*snip*/) { result = true; }
        else if (/*snip*/) { result =true; }
    }
    return result;
}

使用单个 return 语句可以更轻松地跟踪正在发生的事情,并确保它在任何条件语句之外并在声明时进行初始化,以确保您始终返回一个值。

于 2012-11-28T21:18:20.997 回答
3

以下:

if (A)
{   
    if (B) { return true; }
    else if (C) { return true; }
    else if (D) { return true; }
}

相当于:

return A && (B || C || D);

(假设之前没有返回任何值的任何情况都意味着返回 false。)

于 2012-11-28T21:25:44.710 回答
2

您并不总是返回一个值:

    if (playerPositionM.Y <= groundPositionM.Y + groundM.Height && playerPositionM.Y > groundPositionM.Y)
    {   
        if (playerPositionM.X < groundPositionM.X && (playerPositionM.X + playerM.Width < groundPositionM.X + groundM.Width && playerPositionM.X + playerM.Width > groundPositionM.X)) 
        { 
            return true; 
        }
        else if (playerPositionM.X + playerM.Width > groundPositionM.X + groundM.Width && (playerPositionM.X < groundPositionM.X + groundM.Width && playerPositionM.X > groundPositionM.X))
        { 
            return true; 
        }
        else if ((playerPositionM.X > groundPositionM.X && playerPositionM.X < groundPositionM.X + groundM.Width) && (playerPositionM.X + playerM.Width < groundPositionM.X + groundM.Width && playerPositionM.X + playerM.Width > groundPositionM.X)) 
        { 
            return true; 
        }
        else
        {
            // You need to return a value here:
        }
    }
    else
    {
        // You need to return a value here:
    }

etc!
于 2012-11-28T21:16:53.287 回答
2

如果没有else作为其余条件的全部内容,您需要添加return false;以下逻辑检查。

public Boolean DetectPlayerAndGround1Collision2(/*snip*/)
{            
    if (/*snip*/)
    {   
        if (/*snip*/) { return true; }
        else if (/*snip*/) { return true; }
        else if (/*snip*/) { return true; }
    }
    return false; 
}
于 2012-11-28T21:14:45.110 回答