【问题标题】:Calling on Enum class for reference调用 Enum 类以供参考
【发布时间】:2013-03-15 05:22:12
【问题描述】:

我在下面列出了这个枚举类。 枚举类是:

public enum Direction {

    NORTH,
    SOUTH,
    EAST, 
    WEST,
    NOWHERE
}

并且说明是,当我从另一个名为车辆的类中移动车辆时,它会返回一个方向(北、南、东或西)移动,这将使汽车更接近目标目的地。对 nextMove() 的调用应该修改 Vehicle 对象的内部状态,以根据返回的方向反映其新位置。如果汽车的当前位置等于目标目的地,那么nextMove 应该返回“NOWHERE”。所以我试图解决这个创建 if 语句,例如,如果它向北,那么它将打印 NORTH,反之亦然。以下是规格和我的尝试:

如果汽车在位置 (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 语句来回答上面的这个问题,但我很确定有什么问题。

【问题讨论】:

  • 那么你的条件没有意义......
  • 至少对我来说不是......因为似乎所有 if 块都会执行。

标签: java


【解决方案1】:
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);
           }
}

【讨论】:

    【解决方案2】:

    试试这个。xPosition 和 yPosition 是 Car 的当前 (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);
        }
    }
    

    【讨论】:

    • 您可以简单地在切换结束时打印togo 对象本身,以删除roundant 代码。
    猜你喜欢
    • 2011-04-19
    • 1970-01-01
    • 2015-12-03
    • 2014-08-28
    • 2017-10-29
    • 2018-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多