package rotate;
public class Rotate { static int rc = 12; 
static int i=0 ;
static int  j=0;
static int  d=0;
static int[][] dat = new int[rc][rc]; static int pen=2;
public static void main(String[] args){    
// RC就是行列数,试试5 6 7 10等数值,都能正确输出,呵呵~~     //初始化数据    
for(int ii=0; ii<rc; ii++){    
for(int jj=0; jj<rc; jj++){    
dat[ii][jj]=-1;    
}    
}    
dat[0][0]=1 ;
while(pen<=(rc)*(rc)){   
//PR();
if (nextstep(rc))
dat[i][j]=pen++;
}    
PR();}private static boolean nextstep(int rc)
{    
int ii=i,jj=j;
switch (d) {
case 1:ii=i+1;break;
case 0:jj=j+1;break;
case 3:ii=i-1;break;
case 2:jj=j-1;break;

if (ii<0 ||ii>=rc||jj<0 ||jj>=rc||dat[ii][jj]>0) //边界
{
d++;
if (d>3) d=0;
return false;
}
i=ii;j=jj;
return true;
}private static void PR(){
// 打印结果    
for(int i=0; i<rc; i++){    
for( int j=0; j<rc; j++){    
System.out.print(dat[i][j]+"\t");    
}    
System.out.println("\n");    
}    
System.out.println("方向:"+d+"I:" + i + "J:" + j + "数字" + pen);  
}}