2016-02-01 3 views
1

У меня есть компиляция программы без ошибок. Когда я пытаюсь запустить, он заканчивается. Может ли кто-нибудь помочь мне выполнить этот запуск с введенными пользователем начальными и конечными позициями? Я немного потерял. Вот задание:Позиции, введенные пользователем для Maze

Измените проблему лабиринта в главе 4, чтобы она начиналась с заданной пользователем начальной позиции (кроме 0, 0) и выполняла поиск конечной конечной точки.

И код в основном относится к проблеме лабиринта, которая упоминается только с классом позиции и без введенной пользователем части.

public class Maze { 

    public static void main(String[] args) { 
    } 

    public interface StackADT<T> { 

     public void push(T element); 

     public T pop(); 

     public T peek(); 

     public boolean isEmpty(); 

     public int size(); 

     public String toString(); 

    } 

    class LinkedStack<T> implements StackADT<T> { 

     private int count; 
     private LinearNode<T> top; 

     public LinkedStack() { 
      count = 0; 
      top = null; 
     } 

     class LinearNode<T> { 

      private LinearNode<T> next; 
      private T element; 

      public LinearNode() { 
       next = null; 
       element = null; 
      } 

      public LinearNode(T elem) { 
       next = null; 
       element = elem; 
      } 

      public LinearNode<T> getNext() { 
       return next; 
      } 

      public void setNext(LinearNode<T> node) { 
       next = node; 
      } 

      public T getElement() { 
       return element; 
      } 

      public void setElement(T elem) { 
       element = elem; 
      } 
     } 

     class Position { 

      private int x; 
      private int y; 

      Position() { 
       x = 0; 
       y = 0; 
      } 

      public int getx() { 
       return x; 
      } 

      public int gety() { 
       return y; 
      } 

      public void setx1(int a) { 
       x = a; 
      } 

      public void sety(int a) { 
       y = a; 
      } 

      public void setx(int x2) { 

      } 
     } 

     private final int TRIED = 3; 

     private final int PATH = 7; 

     private int[][] grid = {{1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1}, 
     {1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1}, 
     {1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0}, 
     {0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1}, 
     {1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1}, 
     {1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1}, 
     {1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1}, 
     {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 
     {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}}; 

     public StackADT<Position> push_new_pos(int x, int y, 
       StackADT<Position> stack) { 
      Position npos = new Position(); 
      npos.setx1(x); 
      npos.sety(y); 
      if (valid(npos.getx(), npos.gety())) { 
       stack.push(npos); 
      } 
      return stack; 
     } 

     public boolean traverse() { 
      boolean done = false; 
      Position pos = new Position(); 
      Object dispose; 
      StackADT<Position> stack = new LinkedStack<Position>(); 
      stack.push(pos); 

      while (!(done)) { 
       pos = stack.pop(); 
       grid[pos.getx()][pos.gety()] = TRIED; // this cell has been tried 
       if (pos.getx() == grid.length - 1 && pos.gety() == grid[0].length - 1) { 
        done = true; // the maze is solved 
       } else { 
        stack = push_new_pos(pos.getx(), pos.gety() - 1, stack); 
        stack = push_new_pos(pos.getx(), pos.gety() + 1, stack); 
        stack = push_new_pos(pos.getx() - 1, pos.gety(), stack); 
        stack = push_new_pos(pos.getx() + 1, pos.gety(), stack); 
       } 
      } 
      return done; 
     } 

     private boolean valid(int row, int column) { 
      boolean result = false; 
      if (row >= 0 && row < grid.length 
        && column >= 0 && column < grid[row].length) { 
       if (grid[row][column] == 1) { 
        result = true; 
       } 
      } 

      return result; 
     } 

     public String toString() { 
      String result = "\n"; 

      for (int row = 0; row < grid.length; row++) { 
       for (int column = 0; column < grid[row].length; column++) { 
        result += grid[row][column] + ""; 
       } 

       result += "\n"; 
      } 
      return result; 
     } 

     @Override 
     public void push(T element) { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public T pop() { 
      // TODO Auto-generated method stub 
      return null; 
     } 

     @Override 
     public T peek() { 
      // TODO Auto-generated method stub 
      return null; 
     } 

     @Override 
     public boolean isEmpty() { 
      // TODO Auto-generated method stub 
      return false; 
     } 

     @Override 
     public int size() { 
      // TODO Auto-generated method stub 
      return 0; 
     } 

    } 
} 

ответ

0

Вы ничего не делать в основной метод:

public static void main(String[] args){} 

Следовательно, программа ничего не делает.

+0

Когда я делаю всю программу Main, интерфейс StackADT говорит мне: ** Интерфейс участника StackADT может быть определен только внутри класса или интерфейса верхнего уровня или в статическом контексте ** – TAL2

+0

Вам не нужно ставить все свои Вы знаете это в основном методе? – ctst

+0

Я беру главный метод, а затем мои x и y в классе Position не могут быть разрешены переменной. – TAL2

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