自定义图形不返回正确的顶点

时间:2018-04-01 13:13:44

标签: java graph

我为编程问题编写了自定义类Graph。但是,getVertex方法似乎不起作用。它应该返回保存Vertex对象的Verschiebung,该对象由参数给出。当我尝试在控制台中打印正确的顶点地址时,我会返回null。我真的无法在这里找到问题。 2D数组feld填充了Planquadrat的对象。该课程工作正常,因此我没有包含代码片段。

ij是整数。声明没有在这里显示。

private Planquadrat[][] feld;
private Graph verschiebungen;
public void erstelleGraph() {
    verschiebungen = new Graph();
    Vertex neuerVertex1;
    neuerVertex1 = new Vertex(new Verschiebung(-1, feld[i][j], feld[i+1][j]));
    verschiebungen.addVertex(neuerVertex1);
    System.out.println(verschiebungen.getVertex(
                       neuerVertex1.getVerschiebung()));
}

这是类Graph:

public class Graph{
    private List<Vertex> vertices;
    private List<Edge> edges;

    public Graph(){
        vertices = new List<Vertex>();
        edges = new List<Edge>();
    }

    public Vertex getVertex(Verschiebung pVerschiebung){
        Vertex result = null;
        vertices.toFirst();
        while (vertices.hasAccess() && result == null){
            if (vertices.getContent().getVerschiebung().getVon().equals(pVerschiebung.getVon()) && vertices.getContent().getVerschiebung().getNach().equals(pVerschiebung.getNach())){
                result = vertices.getContent();
            }
            vertices.next();
        }

        return result;
   }

   public void addVertex(Vertex pVertex){
      vertices.append(pVertex);      
   }
}

这是Vertex类:

public class Vertex{
    private Verschiebung verschiebung;
    private boolean mark;

    public Vertex(Verschiebung pVerschiebung){
        verschiebung = pVerschiebung;
        mark = false;
    }

    public Verschiebung getVerschiebung(){
        return verschiebung;
    }

以下是Verschiebung课程:

public class Verschiebung {

    private int menge;
    private Planquadrat von, nach;

    public Verschiebung (int pMenge, Planquadrat pVon, Planquadrat pNach) {
        menge = pMenge;
        von = pVon;
        nach = pNach;
    }

    public Planquadrat getVon() {
        return von;
    }

    public Planquadrat getNach() {
        return nach;
    }
}

List类:它也是一个自定义类,我可以保证它工作正常,因为我已经使用了很多。方法append将新对象添加到列表的末尾。 toFirst将列表的第一个对象设置为当前对象,next进一步将当前对象设置为一个元素。如果仍有当前对象,则返回hasAccess

以下是equals()的{​​{1}}和hashChode()的实施:

Planquadrat

0 个答案:

没有答案