【发布时间】:2018-04-20 21:56:13
【问题描述】:
for (int[] w : weights)
distance[w[0] - 1][w[1] - 1] = w[2];
如何将此增强的循环转换为 for 循环?其中权重和距离是二维数组。
【问题讨论】:
for (int[] w : weights)
distance[w[0] - 1][w[1] - 1] = w[2];
如何将此增强的循环转换为 for 循环?其中权重和距离是二维数组。
【问题讨论】:
您需要做的就是定义一些迭代器(在我们的例子中为i)并迭代多维数组,如下所示:
for (int i = 0; i < weights.length; i++) {
int[] w = weights[i];
distance[w[0] - 1][w[1] - 1] = w[2];
}
【讨论】:
你的意思是:
for (int i = 0; i < weights.length; i++)
distance[weights[i][0] - 1][weights[i][1] - 1] = weights[i][2];
注意w被weights[i]替换
【讨论】:
简单的答案是创建一个迭代权重长度的索引并使用它。
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 的使用是描述性的和良好的做法,但完全是可选的。您可以不使用它,循环也可以正常工作。
【讨论】: