Как исправить проблему постановки и снятия в коде? - PullRequest
0 голосов
/ 11 апреля 2019

Я работаю над этим проектом, чтобы решить лабиринт, используя очередь в Java.Поскольку я работал над основным классом, я получаю ошибки именно в методах enqueue и dequeue.

public void mazeSolver(int startRow, int startCol, int endRow, int endCol) { 
    Location location = new Location();
    location.setPosition(startRow, startCol);
    LocationQueue queue = new LocationQueue();
    queue.enqueue(location);
    while (!queue.isEmpty()) {
        location = queue.dequeue();
        mazeArray[location.getRow()][location.getColumn()] = '.';
        if ((location.getRow() == endRow && location.getColumn() == endCol)) {
            break;
        }
        if (location.getRow() + 1 < Rows) {
            if (mazeArray[location.getRow() + 1][location.getColumn()] == ' ') {
                Location newLocation = new Location();
                newLocation.setPosition(location.getRow() + 1, location.getColumn());
                queue.enqueue(newLocation);
            }
        }
        if (location.getRow() - 1 >= 0) {
            if (mazeArray[location.getRow() - 1][location.getColumn()] == ' ') {
                Location newLocation = new Location();
                newLocation.setPosition(location.getRow() - 1, location.getColumn());
                queue.enqueue(newLocation);
            }
        }
        if (location.getColumn() + 1 < Columns) {
            if (mazeArray[location.getRow()][location.getColumn() + 1] == ' ') {
                Location newLocation = new Location();
                newLocation.setPosition(location.getRow(), location.getColumn() + 1);
                queue.enqueue(newLocation);
            }
        }
        if (location.getColumn() - 1 > 0) {
            if (mazeArray[location.getRow()][location.getColumn() - 1] == ' ') {
                Location newLocation = new Location();
                newLocation.setPosition(location.getRow(), location.getColumn() - 1);
                queue.enqueue(newLocation);
            }
        }
    }
}

У меня есть класс LocationQueue, который включает методы enqueue и dequeue:

public class LocationQueue<Location> {

LinkList locationList = new LinkList();

public void enqueue(int iData) {
    locationList.addLast(iData);
}

public Node dequeue() {
    if (!locationList.isEmpty()) {
        return locationList.deleteFirst();
    } else {
        return null;
    }
}

public void displayQueue() {
    locationList.displayList();
    System.out.println();
}

public boolean isEmpty() {
    return locationList.isEmpty();
}
}

И это мой класс Node:

public class Node  {
int iData;
Node next;

public Node (int values) {
    iData = values;
    next = null;
}

  public void displayNode(){
        System.out.print(iData + " ");
    }
}

Эта проблема можетбыть простым решением, и я не понимаю, где я делаю это неправильно.Так как в сообщении об ошибке указано «Метод enqueue (int) в типе LocationQueue не применим для аргументов (Location)» и «Несоответствие типов: невозможно преобразовать из узла в местоположение».Я просто не уверен, какой раздел кода мне нужно изменить.Мое местоположение и класс LinkList могут быть неуместны для публикации в этом выпуске, однако, если вы хотели бы видеть оба класса, я не против опубликовать их.

Примечание. Если мой формат кода выглядит несколько не так, я приношу свои извинения.Я все еще привыкаю к ​​форматированию кода в StackOverflow.

...