大学IT网 - 最懂大学生的IT学习网站! QQ资料交流群:367606806
当前位置:大学IT网 > Java技巧 > Java 螺旋数组的实现方式-一个循环实现哦

Java 螺旋数组的实现方式-一个循环实现哦


[摘要]本文主要是对Java 螺旋数组的实现方式-一个循环实现哦的讲解,希望对大家学习Java 螺旋数组的实现方式-一个循环实现哦有所帮助。

  随着编程的学习和工作,感触越来越深的,就是如何做好对需求的理解。那么在学习的过程中,就是如何将一个实际问题,转化成计算机语言去实现。我觉得我的这方面的能力很是欠缺啊。

  今天分享一下一个螺旋数组例子的分析:

  贴上code:

  package excesize;

  /*

  * 螺旋数组:

  * 4

  * 1234

  * 1213145

  * 1116156

  * 10987

  */

  public class LuoxuanArray {

  public static void main(String[] args){

  int len=4;

  int[][] arr=luoxuanStart(len);

  for(int i=0;i<len;i++){

  for(int j=0;j<len;j++)

  {

  System.out.print(+arr[i][j]+"\t");

  }

  System.out.println();

  }

  }

  public static int[][] luoxuanStart(int len){

  /*

  * 定义一个整形方向变量,默认值为:0

  * 0:向右;1:向下;2:向左;3:向上

  */

  final int toRight=0;//为什么要定义成final类型

  final int toDown=1;

  final int toLeft=2;

  final int toUp=3;

  int currentDirection=toRight;

  //定义一个二维数组,用于存放二维的螺旋数组值

  int x=0,y=0;//定义二维数组的下标

  int[][] luoxuan=new int[len][len];

  for(int i=1;i<=len*len;i++){//----------------------------------for

  //给当前坐标赋值

  luoxuan[x][y]=i;

  //计算下一个正确坐标-这个坐标不一定正确,所以先将此坐标的位置

  int tempX = x;

  int tempY = y;

  //根据当前的方向确定下一个位置的坐标--------switch

  switch (currentDirection){

  case toRight:{

  tempY++;

  break;

  }

  case toDown:{

  tempX++;

  break;

  }

  case toLeft:{

  tempY--;

  break;

  }

  case toUp:{

  tempX--;

  break;

 

  }

  }//-----------------------------switch

  //2.2、下一个坐标如果正确,就赋值。否则,就转向,并赋值。

  /*

  * 坐标值在正确的范围,并且该坐标未被赋过值,才是正确的坐标值

  */

  if(tempX>=0 && tempX<len && tempY>=0 && tempY<len && luoxuan[tempX][tempY]==0){

  //如果是正确的坐标,将临时坐标赋给实际坐标

  x=tempX;

  y=tempY;

  }else{

  //开始转向 下一个方向 = (curDir+1)%4

  currentDirection=(currentDirection+1)%4;//四个方向

  switch (currentDirection){

  case toRight:{

  y++;

  break;

  }

  case toDown:{

  x++;

  break;

  }

  case toLeft:{

  y--;

  break;

  }

  case toUp:{

  x--;

  break;

  }

  }//-------------------switch

  }//-----------------------------------if

  }//-------------------------------for

  return luoxuan;

  }//-----------------------------luoxuanStart

  }



相关评论