我正在使用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
答案 0 :(得分:3)
如果您的Edge
构造函数有两个String
参数和一个int
参数,那么只需使用Scanner读取两个String
和一个int
,将它们存储在变量中,然后将它们传递给Edge
构造函数。
答案 1 :(得分:0)
查看documentation of Scanner以了解如何以简单的方式获取输入。
答案 2 :(得分:0)
您可以使用扫描仪在运行时获取输入
//From command line
Scanner in = new Scanner(System.in);
//From file
Scanner sc = new Scanner(new File("edges"));
while (sc.hasNextLong()) {...}
然后,您必须使用这些值实例化Edge对象并在TreeSet中使用它
答案 3 :(得分: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次,只是为了演示,你可以自己操作循环。它希望用户输入 dash( - )作为参数的分隔符。有效的用户输入可能类似于: 24-5-6 并且还要注意错误处理,不会在此代码中处理不匹配的用户输入。