当前位置:  开发笔记 > 编程语言 > 正文

Java - 从中​​间开始迭代二维数组

如何解决《Java-从中​​间开始迭代二维数组》经验,为你挑选了1个好方法。

我在二维数组上有这个完全正常的循环.

for(int i = 0; i

我想通过这个二维数组,从中间开始.例如,如果两个维度的数组长度都为100,我希望它像这样重复:

array[50][50] //middle of array
array[49][50] //x-1
array[50][49] //y-1
array[51][50] //x+1
array[50][51] //y+1
array[48][50] //x-2
array[49][49] //x-1 and y-1
array[50][48] //y-2
array[51][49] //x+1 and y-1
array[52][50] //x+2
array[51][51] //x+1 and y+1
array[50][52] //y+2
array[49][51] //x-1 and y+1
etc.

我花了好几个小时找到一种有效的方法并在互联网上找到解决方案,但我还没有找到一个好的答案.谁知道怎么做?



1> luk2302..:

这还不会给你任何java代码,而是一个如何处理问题的想法.

在一张纸上绘制一个尺寸小得多的数组网格,并绘制每个单元格中应该到达单元格的数字.

[ ][ ][ ][ ][ ]
[ ][ ][ ][ ][ ]
[ ][ ][1][ ][ ]
[ ][ ][ ][ ][ ]
[ ][ ][ ][ ][ ]

[ ][ ][ ][ ][ ]
[ ][ ][3][ ][ ]
[ ][2][1][4][ ]
[ ][ ][5][ ][ ]
[ ][ ][ ][ ][ ]

[ ][ ][8][ ][ ]
[ ][7][3][9][ ]
[6][2][1][4][A]
[ ][D][5][B][ ]
[ ][ ][C][ ][ ]

[ ][F][8][G][ ]
[E][7][3][9][H]
[6][2][1][4][A]
[L][D][5][B][I]
[ ][K][C][J][ ]

[M][F][8][G][N]
[E][7][3][9][H]
[6][2][1][4][A]
[L][D][5][B][I]
[P][K][C][J][O]

"蜗牛"模式清晰可见.您始终填充先前填充的单元格的外部邻居单元格.

忽略字段的外边界,第一次迭代填充

1个细胞 - 然后
4个细胞
8个细胞
12个细胞
... +4个细胞

在循环方面,你不应该循环使用(i,j)哪个都反映数组中的索引.而是在rounds上循环然后在该特定回合中打印相应的单元格.在圆形X你开始在现场arrayLength / 2 - X.

推荐阅读
wurtjq
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有