package JavaTest; /** * 螺旋数算法 * 2010-10-5 * @author jinliang * */ public class RollNum { static int num = 10; static int X; static int Y; static int pianli; static int[][] array; static int[][] add = { { -1, 0 }, { 0, 1 }, { 1, 0 }, { 0, -1 } };// 方向数组 public static void main(String arg[]) { array = new int[num][num]; X = num - 1;// 起点x Y = 0;// 起点y int MAX = num * num; array[X][Y] = MAX; int fornum = num - 1;//递加(减)循环次数 for (int i = 1; i <= num * 2 - 1; i++) {// 转向循环改变次数 //此次循环方向 int x = add[(i-1) % 4][0]; int y = add[(i-1) % 4][1]; if (i < 4) {//头三次不换递加(减)循环次数 for (int j = fornum; j > 0; j--) { array[X + x][Y + y] = MAX - 1; X = X + x; Y = Y + y; MAX = MAX - 1; } }else{ if(i%2==0){ fornum=fornum-1;//运行两次换一次递加(减)循环次数,减少一次 } for (int j = fornum; j > 0; j--) { array[X + x][Y + y] = MAX - 1; X = X + x; Y = Y + y; MAX = MAX - 1; } } } //循环输出数组 for(int i=0;i<num;i++){ for(int j=0;j<num;j++){ System.out.print("/t"+array[i][j]); } System.out.println(""); } } }