java数组的小程序!
用java写一个12345161718196152415207142322218131211109好像要用数组做!...
用java写一个
1 2 3 4 5
16 17 18 19 6
15 24 15 20 7
14 23 22 21 8
13 12 11 10 9
好像要用数组做! 展开
1 2 3 4 5
16 17 18 19 6
15 24 15 20 7
14 23 22 21 8
13 12 11 10 9
好像要用数组做! 展开
1个回答
展开全部
/*
* 本方法也是采用类似绕圈圈的方法给数组赋值的(→↓←↑如此循环)
*/
static int[][] test(int lenght) {
//定义数组
int[][] rs = new int[lenght][lenght];
//方向,1表示从左往右赋值,2表示向下,3向右,4向上
int fangxiang = 1;
//上一次的坐标
int x = -1, y = 0;
//当前坐标
int tx=-1,ty=0;
//填充的数值
int i = 1;
while (i <= lenght * lenght) {
//根据方向判断应该是哪个坐标加减
if (fangxiang == 1)
tx++;
else if (fangxiang == 2)
ty++;
else if (fangxiang == 3)
tx--;
else if (fangxiang == 4)
ty--;
//如果该坐标在数组内,并且还没有赋值(也就是还没有越界并且没有碰壁)
if(tx>-1 && ty>-1 && tx < lenght && ty < lenght && rs[ty][tx] == 0){
rs[ty][tx] = i;
//记录此次的坐标
x=tx;
y=ty;
i++;
}else{//若不然,坐标返回上次的坐标,并且改变方向
tx=x;
ty=y;
fangxiang++;
if (fangxiang > 4)
fangxiang = 1;
}
}
return rs;
}
* 本方法也是采用类似绕圈圈的方法给数组赋值的(→↓←↑如此循环)
*/
static int[][] test(int lenght) {
//定义数组
int[][] rs = new int[lenght][lenght];
//方向,1表示从左往右赋值,2表示向下,3向右,4向上
int fangxiang = 1;
//上一次的坐标
int x = -1, y = 0;
//当前坐标
int tx=-1,ty=0;
//填充的数值
int i = 1;
while (i <= lenght * lenght) {
//根据方向判断应该是哪个坐标加减
if (fangxiang == 1)
tx++;
else if (fangxiang == 2)
ty++;
else if (fangxiang == 3)
tx--;
else if (fangxiang == 4)
ty--;
//如果该坐标在数组内,并且还没有赋值(也就是还没有越界并且没有碰壁)
if(tx>-1 && ty>-1 && tx < lenght && ty < lenght && rs[ty][tx] == 0){
rs[ty][tx] = i;
//记录此次的坐标
x=tx;
y=ty;
i++;
}else{//若不然,坐标返回上次的坐标,并且改变方向
tx=x;
ty=y;
fangxiang++;
if (fangxiang > 4)
fangxiang = 1;
}
}
return rs;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询