for (int[] w : weights)
distance[w[0] - 1][w[1] - 1] = w[2];
如何将此增强型循环转换为for循环?其中权重和距离是二维数组。
答案 0 :(得分:2)
您需要做的就是定义一些迭代器(在我们的例子中为i
)并迭代多维数组,如下所示:
for (int i = 0; i < weights.length; i++) {
int[] w = weights[i];
distance[w[0] - 1][w[1] - 1] = w[2];
}
答案 1 :(得分:2)
for (int i = 0; i < weights.length; i++)
distance[weights[i][0] - 1][weights[i][1] - 1] = weights[i][2];
注意 w
取代weights[i]
答案 2 :(得分:2)
简单的答案是创建一个迭代到权重长度并使用它的索引。
for (int i = 0; i < weights.length; i++)
distance[weights[i][0] - 1][weights[i][1] - 1] = weights[i][2];
然而,这可能很难阅读,所以我会使用一些名称很好的变量。我还添加了一些最终关键字以便于阅读。
for (final int index = 0; index < weights.length; index++)
{
final int weight0 = weights[index][0] - 1;
final int weight1 = weights[index][1] - 1;
final int weight2 = weights[index][2];
distance[weight0][weight1] = weight2;
}
您使用哪种风格以及哪种风格更具可读性当然取决于您。
注意:上面使用final是描述性和良好做法,但完全是可选的。你可以把它放在外面,循环也可以正常工作。