如何从某个位置开始迭代2d数组?

时间:2017-07-31 08:20:38

标签: java arrays matrix

我必须在随机位置X移动整个矩阵:

在每个新位置我将它与该位置的值进行比较(为简单起见,矩阵中唯一的部分是X)。虽然如果X从0开始这样做很容易,但在我的情况下,X片段可以从矩阵中的任何位置开始,现在我首先开始使用这个循环:

for(int i = row_x;i<rows;i++)
    for(int j = col_x;j<cols;j++)
        //do something

但这样做只会让我访问某些字段:vistied fields sample

我需要访问此图片中突出显示的所有字段:required

那么解决它的最简单方法是什么?

3 个答案:

答案 0 :(得分:4)

您应该检查它是否是外循环的第一次迭代:

    node
  .attr("cx", function(d) {
    return (d.x = Math.max(radius, Math.min(width - radius, d.x)));
  })
  .attr("cy", function(d) {
    return (d.y = Math.max(radius, Math.min(height - radius, d.y)));
  })
  //now update the links.

答案 1 :(得分:2)

一种解决方案是将您的2D阵列结构更改为一维数组并以1D(不是算法)工作,然后应用此:

init = rows*i+j;

for(int l = init; l<size;i++){
    //do things
}

答案 2 :(得分:0)

不要启动内部循环(循环从col_x进行列迭代,而是从第0个索引(第一列)开始。 这将涵盖required

中给出的字段