Перьевой плоттер Star Search, движущийся от двух неподключенных узлов - PullRequest
1 голос
/ 02 октября 2011

У меня проблемы с заданием по программированию, это пенплоттер, здесь уже было довольно много вопросов.

Вот резюме:

Под бумажным листом понимается сетка с осями X и Y, проходящими от 0 до бесконечности (условно). Все чертежи полностью содержатся в этом квадранте и могут быть размещены на странице. Можно всегда предполагать, что строки не содержатся в других строках. Ручка всегда начинается в начале координат (0, 0), но может заканчиваться где угодно. Линии задаются (x, y) координатами (в целых числах) их конечных точек на сетке. Ручка может либо провести линию между любыми двумя точками, либо двигаться (не рисуя ничего) по прямой линии между любыми двумя точками. Как должно быть очевидно, линия может быть проведена в любом направлении. Поскольку мы хотим минимизировать общее время рисования фигуры, предположим, что перо движется с постоянной скоростью, так что оптимальный рисунок - это тот, который минимизирует общее расстояние, перемещаемое пером, но не рисует.

Все входные данные будут в файле с последовательностью строк следующего вида:

Линия между x1 y2 и x2 y2

Я использую это для моего ввода: Линия между 0 0 и 2 2

Строка между 4 1 и 4 4

Строка между 4 4 и 4 7

Строка между 2 6 и 4 4

Строка между 4 4 и 6 2

Строка между 6 6 и 4 4

Строка между 2 2 и 4 4

и края хранятся в массиве. Я не уверен, почему он возвращает исключение NullPointerException

Я почти закончил, за исключением следующего цикла for, возвращающего исключение, и я не уверен, почему. Он предназначен для получения списка всех связанных ребер в графе

Исключение говорит: Исключение в потоке "main" java.lang.NullPointerException на Nodes.getConnectedEdges (Nodes.java:55) которая является строкой цикла "for (Edges a: lines"

public ArrayList<Edges> getConnectedEdges(ArrayList<Edges> lines) {
    ArrayList<Edges> returnData = new ArrayList<Edges>();
    for (Edges a : lines) {
        if(a.getFromNode() == this ){ // if this node is the from node of that edge
        returnData.add(a);

        }
        // if this node is the to node of that edge
        if(a.getToNode() == this){
            returnData.add(a);
        }
    }   
    return returnData;
}

Непрерывная проблема заключается в том, как добраться от начала координат (0,0) до неподключенной точки, скажем (2,2)?

Заранее спасибо

...