急求java中这段代码的执行顺序

来源:百度知道 编辑:UC知道 时间:2024/05/16 01:16:17
/*
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
*/

//package Plam2;
public class Plam1
{
public static void main(String[] args)
{
int n=4;
int a[][]=new int[n][n];
int i,j,k=0;
for(i=0;i<(n+1)/2;i++)
{
//顶边,从左到右
for(j=i;j<n-i;j++)
{ a[i][j]=++k;}

for(j=i+1;j<=n-i-1;j++)
{a[j][n-i-1]=++k;}
for(j=n-i-2;j>=i;j--)
{ a[n-i-1][j]=++k;}
for(j=n-i-2;j>=i+1;j--)
{ a[j][i]=++k;}

}

for(i=0;i<a.length;i++)
{
for(j=0;j<a[i].length;j++)

System.out.print(a[i][j]+"\t");
System.out.println();
}
}
}

这是一个for循环的嵌套问题。
首先外部的for循环for(i=0;i<(n+1)/2;i++)控制循环次数,也就是循环两次。--------------当i=0时第一次循环-------------------------
进入内层循环1:for(j=i;j<n-i;j++)产生了第一行的1 2 3 4
进入内层循环2:for(j=i+1;j<=n-i-1;j++)产生每行的下标为3也就是第四个数5 6 7
进入内层循环3:for(j=n-i-2;j>=i;j--)按照倒序产生第四行的前三个数,也就是 8 9 10
进入内层循环4:for(j=n-i-2;j>=i+1;j--)产生第三行第一个数和第二行第一个数11 12
----------i=0循环结束-------------------------------------
------------当i=1时第二次循环----------------------------
进入内层循环1:for(j=i;j<n-i;j++)产生第二行第二三个数,也就是13 14
进入内层循环2:for(j=i+1;j<=n-i-1;j++)产生第三行第三个数,也就是15
进入内层循环3:for(j=n-i-2;j>=i;j--)产生第三行第二个数,也就是16
----------i=1循环结束-------------------------------------
最后通过for(i=0;i<a.length;i++)控制打印二维数组第一个下标的个数,也就是打印四行。
通过内层循环for(j=0;j<a[i].length;j++)控制打印二维数组第二个下标的个数,也就是打印四列。

从main函数开始。进入main函数,定义整形变量n=4,定义整形二维数组a为n行n列(这里n为4,则为四行四列),定义整型变量i,j,k初始值为0.进入第一层for循环当i=0时,循环出来后得a00=1,a01=2,a02=3,a03=4,a13=5,a23=6,a33=7,a32=8,a31=9,a30=10,a20=11,a10=1