java旋转二维数组实例
本文实例讲述了java旋转二维数组的操作,分享给大家供大家参考。具体实现方法如下:
packagetest;
/*
* 1 2 3 4 5
* 16 17 18 19 6
* 15 24 25 20 7
* 14 23 22 21 8
* 13 12 11 10 9
*
* 写一方法,打印等长的二维数组,要求从1开始的自然数由方阵的最外圈向内螺旋方式地顺序排列。
**/
publicclassTest6
{
publicstaticvoidmain(String[]args)
{
arraynum(4);
}
//便于改代码..输入不同y值输出不同的二维数列
privatestaticvoidarraynum(intx)
{
int[][]arr=newint[x][x];
intlen=arr.length,max=0,count=0;
specArr(arr,len,max,count);
arrprint(arr);
}
//高级for输出打印用的
privatestaticvoidarrprint(int[][]arr)
{
for(int[]in:arr)
{
for(intt:in)
{
System.out.print(t+"\t");
}
System.out.println();
}
}
privatestaticvoidspecArr(int[][]arr,intlen,intmax,intcount)
{
while(len>0)
{
intj=0;
for(intindex=0;index<(len-1)*4;index++)
{
if(index<len-1)
arr[0+count][index+count]=++max;
elseif(index<2*(len-1))
arr[count+j++][arr.length-1-count]=++max;
elseif(index<3*(len-1))
arr[arr.length-1-count][(j--)+count]=++max;
elseif(index<4*(len-1))
arr[arr.length-1-(j++)-count][0+count]=++max;
}
if(len==1)
{
arr[arr.length/2][arr.length/2]=max+1;
}//注意到当y值为奇数时,会有循环到n=1的情况,需要补进数组最中间值
count++;
len=len-2;
}
}
}
希望本文所述对大家的Java程序设计有所帮助。