【问题标题】:Creating an unknown number of Nodes Java创建未知数量的节点 Java
【发布时间】:2013-05-02 21:21:24
【问题描述】:

我正在开发一个程序,该程序在用户输入的一系列顶点及其边权重上实现 Dijkstra 算法。在他们实际输入数据之前,我不知道用户要输入多少个顶点。 (第一个输入值之一将是顶点总数)我的问题是我不知道如何为每个顶点创建一个节点,而无需硬编码,例如:

Vertex v1 = new Vertex("VERTEX INFO");
Vertex v2 = new Vertex("VERTEX INFO");
Vertex v3 = new Vertex("VERTEX INFO");

等等

更具体地说,我的代码基于此示例here。在 main 方法中,此代码对其顶点节点进行了硬编码。

这是我在上次尝试中获取用户输入时写的(它被丢弃了,因为我遇到了问题并重新开始)

    ArrayList leftPoints = new ArrayList();
ArrayList rightPoints = new ArrayList();
ArrayList weights = new ArrayList();
    Scanner input = new Scanner(System.in);

String searchInput = input.nextLine();

    String[] searchCommand = searchInput.split(" ");
    for(int i = 0; i <searchCommand.length; i++){
        System.out.print(searchCommand[i] + " ");
    }

        searchInput = input.nextLine();
        int totalVertices = Integer.parseInt(searchInput);

        while (input.hasNextLine()){            
        searchInput = input.nextLine(); 
        searchCommand = searchInput.split(" ");             
        int x = Integer.parseInt(searchCommand[0]);
        int y = Integer.parseInt(searchCommand[1]);
        int weight = Integer.parseInt(searchCommand[2]);

        leftPoints.add(x);
        rightPoints.add(y);
        weights.add(weight);

        }

        int[] x = new int[leftPoints.size()];
        int[] y = new int[rightPoints.size()];
        int[] pathWeights = new int[weights.size()];

        for (int p = 0; p < x.length; p++){
            x[p] = ((Integer) leftPoints.get(p)).intValue();
            y[p] = ((Integer) rightPoints.get(p)).intValue();
            pathWeights[p] = ((Integer) weights.get(p)).intValue();
        }

我将数组列表转换为整数数组以尝试根本不起作用,但决定保留代码以防它对我有帮助

【问题讨论】:

  • 你为什么不试试顶点的数组
  • 你能把你写的东西贴出来吗?听起来您在根据用户输入创建顶点时遇到了麻烦。但如果不知道您的用户输入机制是什么样的,就很难提供任何帮助

标签: java nodes dijkstra


【解决方案1】:

在用户输入时创建顶点,并将它们添加到列表中。

Scanner sc = new Scanner(System.in);
List<Vertex> vertexList = new LinkedList<>();

while(sc.hasNext()) {
    vertexList.add(createVertexFromString(sc.next());
}

createVertexFromString 显然是您自己编写的方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多