0

この列挙型クラスを以下に示します。列挙型クラスは次のとおりです。

public enum Direction {

    NORTH,
    SOUTH,
    EAST, 
    WEST,
    NOWHERE
}

指示は、車両と呼ばれる他のクラスから車両を移動すると、移動する方向 (北、南、東、または西) が返され、車が目的の目的地に一歩近づきます。への呼び出しnextMove()は、Vehicle オブジェクトの内部状態を変更して、返された方向が与えられた新しい位置を反映する必要があります。Car の現在位置が目的地と等しい場合は、nextMove"NOWHERE" を返す必要があります。だから私はこの if ステートメントの作成に対処しようとしました。仕様と私の試みは次のとおりです。

車が位置 (3, 10) にあり、北に移動することを決定した場合、位置 (3, 11) に移動します。一般に、車が位置 (x, y) から「北」に移動すると、位置 (x, y+1) になり、(x, y) から「南」に移動すると位置 (x, y-1) になります。 )、「東」(x + 1、y)および「西」(x-1、y)。のように、オブジェクトが上に移動すると、「NORTH」と表示されます。

現在の試行:

        public void Direction(Direction togo)  
        {
            if((yDestination+1)>yDestination)
            {
                System.out.println("NORTH");
            }

            if((yDestination-1)<yDestination)
            {
                System.out.println("SOUTH");
            }
            if((xCar+1)>xCar)
            {
                System.out.println("EAST");
            }
            if((xCar-1)<xCar)
            {
                System.out.println("WEST");
            }

上記のオブジェクトに if ステートメントで答えようとしましたが、何かが間違っていると確信しています。

4

2 に答える 2

0
According to your code,all the conditions will execute. Try out this..

Class Vehicle
{
    private int currentX,CurrentY;

    public void printDirection(int modifiedX,int modifiedY)
     {
            if(modifiedY>CurrentY)
            {
                System.out.println(Direction.NORTH);
            }

            if(modifiedY<CurrentY)
            {
                System.out.println(Direction.SOUTH);
            }
            if( modifiedX>currentX)
            {
                System.out.println(Direction.EAST);
            }
            if(modifiedX<currentX)
            {
                System.out.println(Direction.WEST);
            }
            currentX=modifiedX;
            currentY=modifiedY;
         }

          public static void main()
           { 
             Vehicle myVehicle = new Vehicle();
             myVehicle.printDirection(0,1);
           }
}
于 2013-03-15T05:36:01.920 に答える
0

これを試してみてください.. xPosition と yPosition は、車の現在の (x,y) です。

class Car
{
    int xPosition = 0;
    int yPosition = 0;

    public void nextMove(Direction direction)  
    {
        switch (direction)
        {
            case NORTH:
                yPosition += 1;
                break;
            case SOUTH:
                yPosition -= 1;
                break;
            case EAST:
                xPosition += 1;
                break;
            case WEST:
                xPosition -= 1;
                break;
        }
        System.out.println(direction);
    }
}
于 2013-03-15T05:38:39.607 に答える