我在下面列出了这个枚举类。 枚举类是:
public enum Direction {
NORTH,
SOUTH,
EAST,
WEST,
NOWHERE
}
并且说明是当我从我的另一个叫做车辆的车辆中移动车辆时,它返回一个方向(NORTH,SOUTH,EAST或WEST)来移动,这将使车辆更靠近目标目的地。对nextMove()
的调用应修改Vehicle对象的内部状态,以反映其返回方向的新位置。如果Car的当前位置等于目标目标,则nextMove
应返回“NOWHERE”。所以我试图解决这个创建if语句,如果它向北,那么它将打印NORTH和反之。以下是规格和我的尝试:
如果汽车处于位置(3,10)并且它决定向北移动,那么它将移动到位置(3,11)。一般来说,如果汽车从位置(x,y)“向北”移动,它将在(x,y + 1)位置结束,从(x,y)向“南”将其置于位置(x,y-1) ),“east”(x + 1,y)和“west”(x-1,y)。如同,如果物体向上移动,那么它会说“北”。
当前尝试:
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语句回答上面的这个问题,但我非常肯定有些问题。
答案 0 :(得分: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);
}
}
答案 1 :(得分:0)
试试这个.. x位置和y位置是汽车的当前(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);
}
}