将方法参数更改为对象时出错(jgrapht 库)
Error when changing method parameter to an object (jgrapht library)
我正在尝试修改 Jgrapht 的函数以将一个点的坐标对 (int, int) 作为参数。我创建了一个 class 和一个由 (x,y) 定义的 Point 对象,并将其作为 directedGraph 的参数
public class Point {
public int x;
public int y;
public Point(int x, int y)
{
this.x = x;
this.y = y;
}
@Override
public String toString() {
return ("[x="+x+" y="+y+"]");
}
}
// --------------------------------------------------------------
public class DirectedGraphDemo {
public void graph(String args[]) {
//Create the directed graph
public DirectedGraph<Point, DefaultEdge> directedGraph = new DefaultDirectedGraph<Point, DefaultEdge>(DefaultEdge.class);
// constructs a directed graph with the specified vertices and edges
directedGraph.addVertex(1,2);
directedGraph.addVertex(1,3);
directedGraph.addVertex(1,4);
directedGraph.addEdge((1,2),(1,3));
directedGraph.addEdge((1,3),(1,4));
directedGraph.addEdge((1,4),(1,2));
// computes all the strongly connected components of the directed graph
StrongConnectivityInspector sci =
new StrongConnectivityInspector(directedGraph);
List stronglyConnectedSubgraphs = sci.stronglyConnectedSubgraphs();
// prints the strongly connected components
System.out.println("Strongly connected components:");
for (int i = 0; i < stronglyConnectedSubgraphs.size (); i++) {
System.out.println(stronglyConnectedSubgraphs.get(i));
}
System.out.println();
// Prints the shortest path from vertex i to vertex c. This certainly
// exists for our particular directed graph.
System.out.println("Shortest path from (1,2) to (1,3):");
List path =
DijkstraShortestPath.findPathBetween(directedGraph, (1,2),(1,3);
System.out.println(path + "\n");
// Prints the shortest path from vertex c to vertex i. This path does
// NOT exist for our particular directed graph. Hence the path is
// empty and the variable "path"; must be null.
System.out.println("Shortest path from (1,2) to (1,3):");
path = DijkstraShortestPath.findPathBetween(directedGraph, (1,2), (1,3));
System.out.println(path);
}
}
我想做的是能够使用:
directedGraph.addVertex(x1,y1);
directedGraph.addVertex(x2,y2);
directedGraph.addEdge((x1,y1), (x2,y2));
path = DijkstraShortestPath.findPathBetween(directedGraph,(x1,y1),(x2,y2));
当我 运行 代码时,即使参数为 Point
,我也会收到错误 "the method addVertex is not applicable for the argument (int,int)",这是由 (int,int) 定义的。
我应该如何进行这项工作?
我使用基于Java
的Processing
此类问题最好通过查看 the API 来回答。
addVertex()
函数接受一个 Point
参数,正如您在通用参数中指定的那样。您不能只替换两个 int
值并期望它起作用。相反,您必须提供 Point
值:
directedGraph.addVertex(new Point(1,2));
同样,您也必须将 Point 值传递给 DijkstraShortestPath.findPathBetween()
函数:
path = DijkstraShortestPath.findPathBetween(directedGraph, new Point(x1,y1),new Point(x2,y2));
我正在尝试修改 Jgrapht 的函数以将一个点的坐标对 (int, int) 作为参数。我创建了一个 class 和一个由 (x,y) 定义的 Point 对象,并将其作为 directedGraph 的参数
public class Point {
public int x;
public int y;
public Point(int x, int y)
{
this.x = x;
this.y = y;
}
@Override
public String toString() {
return ("[x="+x+" y="+y+"]");
}
}
// --------------------------------------------------------------
public class DirectedGraphDemo {
public void graph(String args[]) {
//Create the directed graph
public DirectedGraph<Point, DefaultEdge> directedGraph = new DefaultDirectedGraph<Point, DefaultEdge>(DefaultEdge.class);
// constructs a directed graph with the specified vertices and edges
directedGraph.addVertex(1,2);
directedGraph.addVertex(1,3);
directedGraph.addVertex(1,4);
directedGraph.addEdge((1,2),(1,3));
directedGraph.addEdge((1,3),(1,4));
directedGraph.addEdge((1,4),(1,2));
// computes all the strongly connected components of the directed graph
StrongConnectivityInspector sci =
new StrongConnectivityInspector(directedGraph);
List stronglyConnectedSubgraphs = sci.stronglyConnectedSubgraphs();
// prints the strongly connected components
System.out.println("Strongly connected components:");
for (int i = 0; i < stronglyConnectedSubgraphs.size (); i++) {
System.out.println(stronglyConnectedSubgraphs.get(i));
}
System.out.println();
// Prints the shortest path from vertex i to vertex c. This certainly
// exists for our particular directed graph.
System.out.println("Shortest path from (1,2) to (1,3):");
List path =
DijkstraShortestPath.findPathBetween(directedGraph, (1,2),(1,3);
System.out.println(path + "\n");
// Prints the shortest path from vertex c to vertex i. This path does
// NOT exist for our particular directed graph. Hence the path is
// empty and the variable "path"; must be null.
System.out.println("Shortest path from (1,2) to (1,3):");
path = DijkstraShortestPath.findPathBetween(directedGraph, (1,2), (1,3));
System.out.println(path);
}
}
我想做的是能够使用:
directedGraph.addVertex(x1,y1);
directedGraph.addVertex(x2,y2);
directedGraph.addEdge((x1,y1), (x2,y2));
path = DijkstraShortestPath.findPathBetween(directedGraph,(x1,y1),(x2,y2));
当我 运行 代码时,即使参数为 Point
,我也会收到错误 "the method addVertex is not applicable for the argument (int,int)",这是由 (int,int) 定义的。
我应该如何进行这项工作?
我使用基于Java
的Processing此类问题最好通过查看 the API 来回答。
addVertex()
函数接受一个 Point
参数,正如您在通用参数中指定的那样。您不能只替换两个 int
值并期望它起作用。相反,您必须提供 Point
值:
directedGraph.addVertex(new Point(1,2));
同样,您也必须将 Point 值传递给 DijkstraShortestPath.findPathBetween()
函数:
path = DijkstraShortestPath.findPathBetween(directedGraph, new Point(x1,y1),new Point(x2,y2));