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