Java遍历二维数组 求高手!

Java遍历二维数组 求高手!,第1张

其实多维数组是在一维数组的基础上进行变换的,就拿二维数组来说,它是在一维数组上存储一维数组。给你一幅图你就能明白了:

所以

第一层循环 只是在遍历B数组的第一维度,那么长度为3

第二层循环 遍历B数组第一维度对应下标下的一维数组,所以b[0]length为2,后面的以此类推

希望能帮到你!

 

遍历上三角:
int i,j;
for (i=0;i<3;i++)
for (j=i;j<3;j++) {a[i][j]……};
遍历下三角:
for(i=0;i<3;i++) for(j=0;j<=i;j++){a[i][j]};
遍历主对角线:
for(i=0;i<3;i++){a[i][i]};
遍历副对角线:
for(i=0,j=3-1;i<3;i++,j--){a[i][j]};

我的思路我说一下,您看可不可以。
既然是“回形遍历”,意思也就是说,以螺旋形的顺序输出数组中的每个元素。所以,执行完后,应该每个元素都输出了一遍。我的思路就是,再定义一个变量time,用来累加输出数的个数(其初值为0),每执行一次输出时time的值增加一,当所有元素都输出后,time的值变为rowcol(您输入的数组元素个数)。此时写一条语句if(time==rowcol)break;即可退出循环。这仅仅是我的思路。更简单的我还没想出来。下面是我在您的基础上写的代码:(您的代码有些地方可能粘错了我改过来了)
#include
int main()
{
int row,col;
int i,j,n,time=0;
scanf("%d%d",&row,&col);
int array[100][100];
for(i=0;i<row;i++)
for(j=0;j<col;j++)//你好像写成了:for(j=0;j<row;j++)
scanf("%d",&array[i][j]);
for (n=0;;n++)
{
for (i=n;i<col-n;i++)
{
printf("%4d\n",array[n][i]);
time++;//每执行一次输出 *** 作,time的值增加一
}
printf("\n");
if(time==rowcol)break;
for (j=n+1;j<row-n;j++)
{
printf("%4d\n",array[j][col-n-1]);
time++;
}
printf("\n");
if(time==rowcol)break;
for (i=col-2-n;i>=n;i--)
{
printf("%4d\n",array[row-n-1][i]);
time++;
}
printf("\n");
if(time==rowcol)break;
for (j=row-2-n;j>n;j--)
{
printf("%4d\n",array[j][n]);
time++;
}
printf("\n");
if(time==rowcol)break;
}
return 0;
}
//说明:在for (n=0;;n++)的循环体中,有四个平行的循环结构。
我还会补充!对我的回答那些地方有疑惑,请Hi我!随时恭候!

$res = array();
$t = array('123332','123333');
foreach ($ary as $v) {
    foreach($t as $m) {
        $res[$t][]=$v[$m];
    }
}
print_r($res);

这样应该可以满足你的要求。

一般来说多维数组遍历的话,多个foreach嵌套使用。

多年以后,重看这个代码,发现一些问题,重复发一下吧!

$ary = [
    ['123332' => 123332, '123333' => 123333,],
    ['123332' => 'Hockey Stick', '123333' => 'Hockey Stick2',],
    ['123332' => 3325, '123333' => 3325,],
    ['123332' => 10, '123333' => 10,],
    ['123332' => 3325, '123333' => 3325,],
    ['123332' => 1, '123333' => 1,],
    ['123332' => 'AAAA6', '123333' => 'AAAA6',],
];
$res = [];
$t = ['123332', '123333',];
foreach ($ary as $v) {
    foreach ($t as $m) {
        $res[$m][] = $v[intval($m)];
    }
}
print_r($res);

运行结果:

Array    
(    
[123332] => Array    
(    
[0] => 123332    
[1] => Hockey Stick    
[2] => 3325    
[3] => 10    
[4] => 3325    
[5] => 1    
[6] => AAAA6    
)    
[123333] => Array    
(    
[0] => 123333    
[1] => Hockey Stick2    
[2] => 3325    
[3] => 10    
[4] => 3325    
[5] => 1    
[6] => AAAA6    
)    
)


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13409153.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-30
下一篇 2023-07-30

发表评论

登录后才能评论

评论列表(0条)

保存