package Code1;
public class Code1_8回型矩阵 {
static int length=8;
static int value=1;
static int[][] snake=new int[length][length];
static Direction lastDirection=Direction.Right;
static enum Direction{
Right,Down,Left,Up;
}
public static void main(String[] args) {
initialArray();
print(snake);
}
private static void initialArray() {
int row=0,col=0;
for(int c=0;c<length*length;c++){
snake[row][col]=value;
lastDirection=findDirection(row,col);
switch(lastDirection){
case Right:
col++;
break;
case Down:
row++;
break;
case Left:
col--;
break;
case Up:
row--;
break;
default:
System.out.println("error");
}
value++;
}
}
private static Direction findDirection(int row, int col) {
Direction direction =lastDirection;
switch(direction){
case Right:{
if((col==length-1)||(snake[row][col+1]!=0)){
direction=direction.Down;
}
break;
}
case Down:{
if((row==length-1)|| snake[row+1][col]!=0){
direction=direction.Left;
}
break;
}
case Left:{
if((col==0)||snake[row][col-1]!=0){
direction=direction.Up;
}
break;
}
case Up:{
if(snake[row-1][col]!=0){
direction=direction.Right;
}
break;
}
}
return direction;
}
private static void print(int[][] ary) {
for(int i=0;i<ary.length;i++){
for(int j=0;j<ary.length;j++){
System.out.printf("%-3d",ary[i][j]);
}
System.out.println();
}
}
}
运行结果:
