在我的代码中,我有一个变量:
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]);
};
答案 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]);
}
我假设v1
,v2
等是v1
,v2
等形式的字符串。
答案 3 :(得分:0)
您需要特别关注java.util package,
ArrayList class
。它有.add() .remove() .indexof() .contains() .toArray(),
和更多
答案 4 :(得分:0)
忘记所有变量v1
,v2
等等。只需将它们全部保存在一个数组中即可。
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]);
}