如何将此增强型循环转换为for循环

时间:2018-04-20 21:56:14

标签: java arrays loops 2d

 for (int[] w : weights)
  distance[w[0] - 1][w[1] - 1] = w[2];

如何将此增强型循环转换为for循环?其中权重和距离是二维数组。

3 个答案:

答案 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是描述性和良好做法,但完全是可选的。你可以把它放在外面,循环也可以正常工作。