ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2021-06-03 19:03:47  阅读:109  来源: 互联网

标签:Java && 螺旋 实现 len int 数组 public


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

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

贴上code:

package excesize;
/*
 * 螺旋数组:
 * 4
 * 	1	2	3	4
 * 	12	13	14	5
 * 	11	16	15	6
 * 	10	9	8	7
 */
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
}


 

 

标签:Java,&&,螺旋,实现,len,int,数组,public
来源: https://blog.51cto.com/u_15254659/2853630

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有