【问题标题】:How to translate this enhanced loop to for loop如何将此增强循环转换为 for 循环
【发布时间】:2018-04-20 21:56:13
【问题描述】:
 for (int[] w : weights)
  distance[w[0] - 1][w[1] - 1] = w[2];

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

【问题讨论】:

    标签: java arrays loops 2d


    【解决方案1】:

    您需要做的就是定义一些迭代器(在我们的例子中为i)并迭代多维数组,如下所示:

    for (int i = 0; i < weights.length; i++) {
        int[] w = weights[i];
    
        distance[w[0] - 1][w[1] - 1] = w[2];
    }
    

    【讨论】:

      【解决方案2】:

      你的意思是:

      for (int i = 0; i < weights.length; i++) 
          distance[weights[i][0] - 1][weights[i][1] - 1] = weights[i][2];
      

      注意wweights[i]替换

      【讨论】:

        【解决方案3】:

        简单的答案是创建一个迭代权重长度的索引并使用它。

        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 的使用是描述性的和良好的做法,但完全是可选的。您可以不使用它,循环也可以正常工作。

        【讨论】:

        • @ThanaSa 很高兴为您提供帮助。对任何对您有帮助的答案进行投票,并选择最正确的答案作为您认可的答案。它让我们兴奋:)
        • 对不起,我还没有特权这样做;p
        • @ThanaSa 您不能投票,但即使是新用户也可以接受答案。只需点击您认为最能回答您的问题的答案左侧的灰色小复选标记。
        猜你喜欢
        • 2015-01-22
        • 1970-01-01
        • 2023-04-01
        • 2021-02-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多