0

Treeset用来对边缘进行排序,这是代码:

TreeSet<Edge> edges = new TreeSet<Edge>();

//Sample problem - replace these values with your problem set
edges.add(new Edge("0", "1", 2));
edges.add(new Edge("0", "3", 1));
edges.add(new Edge("1", "2", 3));
edges.add(new Edge("2", "3", 5));
edges.add(new Edge("2", "4", 7));
edges.add(new Edge("3", "4", 6));
edges.add(new Edge("4", "5", 4));

System.out.println("Graph");
KruskalEdges vv = new KruskalEdges();

for (Edge edge : edges) {
    System.out.println(edge);
    vv.insertEdge(edge);
}

我只想从用户那里获取输入,而不是静态地给予edges.add

4

4 回答 4

3

如果您的Edge构造函数接受两个String参数和一个参数,那么只需使用Scannerint读取两个参数String和一个参数,将它们存储在变量中,然后将它们传递给构造函数。intEdge

于 2012-10-16T08:48:50.523 回答
0

您可以使用扫描仪在运行时获取输入

//From command line
Scanner in = new Scanner(System.in);


//From file
Scanner sc = new Scanner(new File("edges"));
while (sc.hasNextLong()) {...}


然后你必须用这些值实例化 Edge 对象并在你的 TreeSet 中使用它

于 2012-10-16T08:57:06.987 回答
0

查看Scanner 的文档以了解如何以简单的方式获取输入。

于 2012-10-16T08:50:15.143 回答
0

使用循环提示每个Edge实例的 3 个参数(您可以通过Scanner类执行此操作。)。然后处理这些参数(我的意思是使用String类函数等)来构造实例。最后,将每个实例添加到同一循环中的边缘集。示例代码:

TreeSet<Edge> edges = new TreeSet<Edge>();

Scanner scanner = new Scanner(System.in);
int counter = 10;

while (counter > 0)
{
    System.out.println("Enter edge parameters:");
    String temp = scanner.nextLine();
    String[] params = temp.split("-");
    edges.add(new Edge(params[0], params[1], Integer.valueOf(params[2])));
    counter--;
}

注意:上面的循环执行了10次,只是为了演示,你可以自己操作循环。它希望用户输入破折号(-)作为参数的分隔符。一个有效的用户输入可能是这样的:24-5-6并且还要小​​心错误处理,不匹配的用户输入在此代码中不会被处理。

于 2012-10-16T09:58:43.780 回答