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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

问题忘了,效果如图:


代码如下:
package tetx111;
public class tetx1111 {




private  static int k=4;
    tetx1111(){
              int count=1;
                int point=0;
               int i,j;

                 int [][]a=new int[4][4];
                  int []num=new int[4*4];
                  for(i=0;i<4;i++)
               for(j=0;j<4;j++)               
               {   num[point]=count;
                   a[j]=num[point];
                   count++;
                   point++;
                       if(i!=0&&j==3)
                       {
                         a[j]=num[k];
                         k++;
                       }
               }
                  for(i=3;i>=0;i--)
                  for(j=3;j>=0;j--)
                  {
                          if(i==3&&j!=3)
                          {a[j]=num[k];       
                          k++;}       
                          else if(i!=3&&i!=0&&j==0)
                                  {a[j]=num[k];
                              k++;}
                   }
            
                  for(i=1;i<3;i++)
                    for(j=1;j<3;j++)
                    {
                            if(i!=3&&i!=0&&i==1)
                            {
                               a[j]=num[k];
                               k++;
                            }
                            else if(i!=3&&i!=0&&i==2)
                                    {
                                    a[j]=num[k];
                                 k++;
                                    }
                              
                                
                    }       
         
         
          /*显示测试数据*/    for(i=0;i<4;i++)
                        {   for(j=0;j<4;j++)
                                    System.out.print(a[j]+"    ");
                       System.out.print("\n");
                        }
                        
                      
         
}
       
           public static void main(String[] args) {
          new tetx1111();
        }
               
               
}


222.png (216.04 KB, 下载次数: 10)

222.png

无标题.png (47.93 KB, 下载次数: 22)

无标题.png

5 个回复

倒序浏览
题目!写一方法,打印等长的二维数组,要求从1开始的自然数由方阵的最外圈向内螺旋方式地顺序排列。 如: n = 4 则打印:                                
1  2  3  4
12 13 14 5
11 16 15 6          
10 9  8  7
回复 使用道具 举报
本帖最后由 pengbeilin 于 2015-8-21 18:45 编辑
  1. public class Test9 {

  2.         /**
  3.          * @param args
  4.          */
  5.         public static void main(String[] args) {
  6.                 // TODO Auto-generated method stub
  7.                 int n=4;//维度
  8.                 int arr[][] =new int[n][n];//所对应的二维数组
  9.                 int min = 1;//第一圈的第一个值值arr[0]=1
  10.                 int count = 0;//圈数
  11.                 cyc(n,arr,min,count);
  12.                
  13.                 //for循环打印二维数组
  14.                 for (int i = 0; i < n; i++) {
  15.                         System.err.println(Arrays.toString(arr[i]));
  16.                 }
  17.         }
  18.         //循环 和递归思想一样的! 只是写法不同
  19.         public static void cyc1(int n,int[][] arr,int min,int count){
  20.                 //for循环判断圈数 和 圈数的维度
  21.                 for (int j=n; j > 0;j-=2,count++ ) {
  22.                                
  23.                         for (int i = 0; i <=(n-1)*4; i++) {
  24.                                 //当圈数为1时 直接赋值跳出
  25.                                 if(j==1){
  26.                                         arr[count][count]=min;
  27.                                         break;
  28.                                 }
  29.                                 if(i<j-1){
  30.                                         arr[count][count+i%(j-1)]=min++;//向右赋值
  31.                                 }else if(i<(j-1)*2){
  32.                                        
  33.                                         arr[count+i%(j-1)][count+j-1]=min++;//向下赋值
  34.                                 }else if(i<(j-1)*3){
  35.                                        
  36.                                         arr[count+j-1][count+j-1-i%(j-1)]=min++;//向左赋值
  37.                                 }else if(i<(j-1)*4){
  38.                                        
  39.                                         arr[count+j-1-i%(j-1)][count]=min++;//向上赋值
  40.                                 }
  41.                         }
  42.                 }
  43.         }
  44. }
复制代码
参照别人递归写的循环
回复 使用道具 举报
pengbeilin 发表于 2015-8-21 18:42
参照别人递归写的循环

我的也实现了好吧
回复 使用道具 举报
boboyuwu 发表于 2015-8-21 19:37
我的也实现了好吧

是啊~ = = 你没写注释 代码那么乱 你叫我怎么看啊
回复 使用道具 举报
pengbeilin 发表于 2015-8-21 20:07
是啊~ = = 你没写注释 代码那么乱 你叫我怎么看啊

我的我的    不过你这思想比较新颖比我写的简介
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马