A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

求大神 帮忙看一下 有没有什么问题  努力了两天终于搞定了  内心有点小激动   检验成果的时候到了  
/*
需求:
        写一方法,打印等长的二维数组,要求从1开始的自然数
        由方阵的最外圈向内螺旋方式地顺序排列。
        如: n = 4 则打印:                                
    1  2  3  4
        12 13 14 5
        11 16 15 6
        10 9  8  7
思路:
        1.二维数组的特殊遍历
        2.把整数赋值给特殊遍历的二维数组
步骤:
        1.横向从左往右赋值,校正二维数组角标;
        2.纵向从上往下赋值,校正二维数组角标;
        3.横向从右往左赋值,校正二维数组角标;
        4.纵向从下往上赋值,校正二维数组角标;
        5.循环上述1--4步;输出打印方阵。
*/
import java.util.Scanner;
class ArryTest  
{
        public static void main(String[] args)
        {
                //定义变量、创建二维数组               
                int a = 0;
                int b = 0;
                int num = 0;

                Scanner sc = new Scanner(System.in);
                System.out.println("输入想要打印的方阵的边长:");
                int lin = sc.nextInt();

                int[][] arr = new int[lin][lin];
                //遍历数组
                int temp = 0;
                for(int n = lin;n>1;n--){

                        //横向从左往右赋值
                        for(;b<=n-1;++b){
                                arr[a][b] = ++num;
                        }
                        //校正二维数组角标
                        --b;
                        ++a;

                        //纵向从上往下赋值
                        for(;a<=n-1;++a){
                                arr[a][b] = ++num;
                        }
                        //校正二维数组角标
                        --a;
                        --b;

                        //横向从右往左赋值
                        for(;b>=n-1-a+temp;--b){
                                arr[a][b] = ++num;
                        }
                        //校正二维数组角标
                        ++b;
                        --a;

                        //纵向从下往上赋值
                        for(;a>b;a--){
                                arr[a][b] = ++num;
                        }
                        //校正二维数组角标
                        ++b;
                        ++a;
                        temp++;
                }
                //打印输出
                for(int x=0; x<arr.length; x++) {
                        for(int y=0; y<arr[x].length; y++) {
                                System.out.print(arr[x][y]+"\t");
                        }
                        System.out.println();
                }
        }
}


螺旋.png (68.91 KB, 下载次数: 21)

螺旋.png

ArryTest.zip

925 Bytes, 下载次数: 59

1 个回复

正序浏览
大神  膜拜!!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马