【发布时间】: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();
}
我将数组列表转换为整数数组以尝试根本不起作用,但决定保留代码以防它对我有帮助
【问题讨论】:
-
你为什么不试试顶点的数组?
-
你能把你写的东西贴出来吗?听起来您在根据用户输入创建顶点时遇到了麻烦。但如果不知道您的用户输入机制是什么样的,就很难提供任何帮助