2013-03-15 5 views
0

У меня есть класс enum, указанный ниже. Enum класс:Вызов класса Enum для справки

public enum Direction { 

    NORTH, 
    SOUTH, 
    EAST, 
    WEST, 
    NOWHERE 
} 

и инструкции при перемещении транспортного средства из другого класса под названием транспортного средства, он возвращает направление (север, юг, восток или запад), чтобы переместить, что будет брать машину на один шаг ближе к целевому назначению. Призыв к nextMove() должен изменить внутреннее состояние объекта Vehicle, чтобы отразить его новое местоположение с учетом направления, которое оно вернуло. Если текущее местоположение автомобиля соответствует целевому назначению, то nextMove должен вернуть «NOWHERE». Я попытался обратиться к этим операторам if, например, если он идет на север, тогда он напечатает СЕВЕР и наоборот. Вот спецификации и моя попытка:

если автомобиль находится в положении (3, 10), и он решает двигаться на север, затем он переместится в положение (3, 11). В общем случае, если автомобиль перемещается «на север» из положения (x, y), он окажется в положении (x, y + 1), «юг» от (x, y) помещает его в положение (x, y-1), «восток» (x + 1, y) и «запад» (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"); 
      } 

Я попытался ответить на этот объект сверху, если заявления, но им вполне уверен, что что-то не так.

+2

Ну, ваши условия не имеют смысла ... –

+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); 
      } 
} 
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); 
    } 
} 
+0

Вы можете просто напечатать сам объект 'togo', в конце коммутатора, чтобы удалить код накопления. – Mordechai

Смежные вопросы