-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

以下:

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 に答える
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 に答える
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 に答える
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 に答える