如何在java中使用treeset从用户那里获得输入?

时间:2012-10-16 08:43:48

标签: java

我正在使用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 个答案:

答案 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 并且还要注意错误处理,不会在此代码中处理不匹配的用户输入。