1

在我的代码中,我有一个变量:

public Edge[] adjacencies;

现在初始化数组是这样的:

     v0.adjacencies = new Edge[] {
        new Edge(v1, distance[0][1]),
        new Edge(v2, distance[0][2]),
        new Edge(v3, distance[0][3]),
        new Edge(v4, distance[0][4]),
        new Edge(v5, distance[0][5]),
        new Edge(v6, distance[0][6]),
        new Edge(v7, distance[0][7]) 
        };

但我想给动态初始化是这样的:

 v0.adjacencies = new Edge[] {
    for(int i=1;i<8;i++)    
         new Edge("v"+i, distance[0][i]); 
 };
4

5 回答 5

1

动态执行此操作的一种方法是创建具有可变长度的数组。

length = 8; 
v0.adjecencies = new Edge[length];
for(int i=1;i<length;i++)    
  v0.adjecencies[i-1] = new Edge("v"+i, distance[0][i]);
于 2013-10-23T04:56:07.253 回答
0

忘记所有关于你的变量v1v2等等。只需将它们全部放在一个数组中即可。

Vertex[] vertices = new Vertex[8];
for (int i = 0; i < 8; i++) {
    vertices[i] = new Vertex();
}

vertices[0].adjacencies = new Edge[7];
for (int i = 1; i < 8; i++) {
    vertices[0].adjacencies[i - 1] = new Edge(vertices[i], distance[0][i]);
}
于 2013-10-23T06:34:18.563 回答
0

您将需要java.util package,专门研究ArrayList class. 它有诸如.add() .remove() .indexof() .contains() .toArray(),和更多的方法

于 2013-10-23T05:40:40.533 回答
0
Vertex[] vertices = {v1,v2,v3,v4,v5,v6,v7};
v0.adjacencies = new Edge[7];
for(int i=1;i<8;i++) {   
  v0.adjacencies[i-1] = new Edge(vertices[i-1], distance[0][i]); 
}

尝试这个。

更新:我假设那些 v1、v2、... 是 Vertex 类的对象(不管你怎么称呼它)并相应地更新代码。

于 2013-10-23T04:55:36.433 回答
0

像这样的东西怎么样:

v0.adjacencies = new Edge[7];
for(int i = 1; 1 < 8; i++)
{
    v0.adjacencies[i - 1] = new Edge("v"+i, distance[0][i]); 
}

我假设v1,等是,v2等形式的字符串。v1v2

于 2013-10-23T04:56:11.700 回答