黑马程序员技术交流社区
标题:
入学试题:二维数组螺旋式打印 求讲解
[打印本页]
作者:
qimingxue
时间:
2014-4-26 15:35
标题:
入学试题:二维数组螺旋式打印 求讲解
写一方法,打印等长的二维数组,要求从
* 1开始的自然数由方阵的最外圈向内螺旋方式地顺
* 序排列。 如: n = 4 则打印:
* 1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
作者:
shi0000
时间:
2014-4-27 21:26
package cn.itheima;
import java.util.InputMismatchException;
import java.util.Scanner;
public class Test9 {
/*
* 写一方法,打印等长的二维数组,要求从1开始的自然数由方阵的最外圈向内螺旋方式地顺序排列。 如: n = 4 则打印:
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
*/
private static int temp=1; //设定变量将不断增加的数加载到数组中
private static int length; //设定方阵的长,宽都 为length
private static int r,l,u,d; //设定方阵的上下左右边界;
private static int x=0,y=0; //坐标初始值
private static int[][] a=new int[0][0]; //使用二维数组存储数据
public static void main(String[] args){
start();
}
//方便输入者输入方阵边长
public static void start(){
Scanner input=new Scanner(System.in);
System.out.println("请输入一个方阵的边长(>0)");
try{
int m=input.nextInt();
System.out.println("******************************");
inputArrays(m);
printArrays();
}catch(InputMismatchException e){
System.out.println("请输入>0的整数!");
start();
}
}
//当符合条件时,一次将改变的temp值加入到数组中。
public static void add(int x,int y){
temp++;
a[x][y]=temp;
}
public static void right(){ //当向右走时
while(x<r){ //如果坐标x小于右边界,存入数据
add(++x,y);
}
if(y<d){ //若坐标y小于下边界,向下走
u++; //上边界+1
down();
}
}
public static void down(){ //当向下走时
while(y<d){ //如果坐标y小于下边界,存入数据
add(x,++y);
}
if(x>l){ //当坐标x大于左边界时,向左走
r--; //右边界-1
left();
}
}
public static void left(){ //当向左走时
while(x>l){ //如果坐标x大于走边界,存入数据
add(--x,y);
}
if(y>u){ //当坐标y大于上边界时,向上走
d--; //下边界-1
up();
}
}
public static void up(){ //同理
while(y>u){
add(x,--y);
}
if(x<r){
l++; //左边界+1
right();
}
}
public static void printArrays(){ //将二维数组中的数据输出
for(int i=0;i<length;i++){
for(int j=0;j<length;j++){
System.out.print(a[j][i]+"\t");
}
System.out.println(); //分行
}
}
public static void inputArrays(int len){
l=0;r=len-1;u=0;d=len-1; //设置上下左右边界的值
length=len; //方阵的边长
a=new int[length][length]; //创建二维数组
a[0][0]=temp; //为a[0][0]赋值
right(); //定义先向右走
}
}
复制代码
以上是代码,有图片附件偶!
无标题.png
(3.09 KB, 下载次数: 14)
下载附件
2014-4-27 21:23 上传
图片展示
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2