java中Array中的动态值初始化

时间:2013-10-23 04:52:22

标签: java

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

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]); 
 };

5 个答案:

答案 0 :(得分: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]);

答案 1 :(得分: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类的对象(无论你怎么称呼它)并相应地更新代码。

答案 2 :(得分:0)

这样的事情怎么样:

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

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

答案 3 :(得分:0)

您需要特别关注java.util package, ArrayList class。它有.add() .remove() .indexof() .contains() .toArray(),和更多

等方法

答案 4 :(得分: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]);
}