黑马程序员技术交流社区

标题: 打印矩形的螺旋数组 [打印本页]

作者: zcy黑马    时间: 2015-5-19 23:44
标题: 打印矩形的螺旋数组
我自己写了点,今天没事发个帖子,求指教
import java.util.Scanner;
class Night
{
        public static void main(String[] args)
        {
                Scanner sc = new Scanner(System.in);
                int Num=13;       
                //确保输入的数值小于10大于0
                while (Num>10|Num<0)
                {                       
                        System.out.println("请输入小于10的数:");
                        Num = sc.nextInt();       
                }
                int a[][] =new int [Num][Num];
                int b=-1,k=0,i=0,j=0,c=1;
        //j = 0 i值变化,由a[0][0]直到加到a[i][0],并赋值
                for (int y=0;y<a.length-1 ;y++ )
                {
                        a[i][j]=++k;i+=(-b);
                }
        //循环a.length-1次,每次少一步
                        for (int x = a.length-1;x>0;x-- )  
                {
                        b=-b;
        // 每次:a[i][j],i值不变,j值或加x次1,或减x次1,并赋值

                        for (int y=0;y<x;y++ )
                        {
                                a[i][j]=++k;j+=b;
                        }
                        c=-c;
        // 每次:a[i][j],j值不变,i值或加x次1,或减x次1,并赋值
                        for (int y=0;y<x ;y++ )
                        {       
                                a[i][j]=++k;i+=c;
                        }
                }
                a[i][j]=++k;
                System.out.println("======================================================");
                for (int x=0;x<a.length;x++ )
                {
                        for (int y =0;y<a.length;y++ )
                        {
                                System.out.print(a[y][x]+"\t");
                        }
                        System.out.println();
                }
        }
}

/*
1  2  3  4  5
16 17 18 19 6   
15 24 25 20 7     
14 23 22 21 8             
13 12 11 10 9         
*/
作者: zcy黑马    时间: 2015-5-19 23:53
你可以任意输入一个数字代表
作者: 黯然残影    时间: 2015-5-20 00:14
不错,顶一个
作者: 林思奇    时间: 2015-5-20 00:28
菜鸟表示看不懂,不过好腻害的样子
作者: zcy黑马    时间: 2015-5-21 22:00
0.0我是来求黑马币的
作者: zcy黑马    时间: 2015-5-29 23:39
这个帖子算是废了,
作者: 小峰Raul    时间: 2015-5-30 00:11
厉害厉害 螺旋矩阵研究了好久没搞定
作者: jiatengde    时间: 2015-5-30 00:34
新人报道,正在努力中
作者: 微凉的暮色    时间: 2015-5-30 00:37
:lol
这个数组 确实麻烦
作者: 横看成岭侧成锋    时间: 2015-5-30 15:36
一直没做出来,艾玛

作者: guojiadui    时间: 2015-5-30 15:59
这是我的
  1. public static void  arrays(int n){
  2.                  int[][] array = new int[n][n];
  3.                  int num=0;   //赋值给数组数
  4.                  //设置数组赋值时的范围
  5.                  int xstart = 0;
  6.                  int xend = n-1;
  7.                  int ystart = 0;
  8.                  int yend = n-1;
  9.                  //循化一次给数组赋值一圈,有外到内;
  10.                  while(xstart<=xend){
  11.                         int x=xstart;
  12.                         int y=ystart;
  13.                         //给数组的上半圈赋值
  14.                  for( y =ystart;y<=yend;y++){
  15.                          if(y==yend){
  16.                                     //赋值数组的一列
  17.                                  for(x=xstart;x<=xend;x++){
  18.                                          array[x][y] = ++num;
  19.                                  }
  20.                          }else{
  21.                                  //赋值数组的一行
  22.                                  array[x][y] = ++num;
  23.                          }
  24.                  }
  25.                      //减少想x,y可赋值范围
  26.                          yend--;
  27.                          xstart++;
  28.                          x--;
  29.                          //给数组下半圈赋值
  30.                          for(y=yend;y>=ystart;y--){
  31.                                  if(y==ystart){
  32.                                          //赋值数组的一列
  33.                                          for(x=xend;x>=xstart;x--){
  34.                                                  array[x][y] = ++num;
  35.                                          }
  36.                               }
  37.                                  else{
  38.                                         //赋值数组的一行
  39.                                           array[x][y] = ++num;          
  40.                                  }                 
  41.                          }
  42.                          //减少想x,y可赋值范围
  43.                          xend--;
  44.                          ystart++;
  45.                }
  46.                     //打印数组
  47.                     print(array);
  48.                  }
  49.                         //打印数组函数
  50.                  public static  void print(int[][] arrays)
  51.                  {
  52.                          for(int i= 0;i<arrays.length;i++)
  53.                          {
  54.                                  for(int j=0;j<arrays.length;j++)
  55.                                          System.out.print(arrays[i][j]+"\t");
  56.                                  System.out.println("\n");
  57.                          }
  58.                          
  59.                  }
  60.        
复制代码

作者: 柒仴、看雲佉    时间: 2015-5-30 22:57
好神奇。。
作者: zcy黑马    时间: 2015-5-31 01:19
小峰Raul 发表于 2015-5-30 00:11
厉害厉害 螺旋矩阵研究了好久没搞定

加油吧,我这只是一个方向
作者: zcy黑马    时间: 2015-5-31 01:20
jiatengde 发表于 2015-5-30 00:34
新人报道,正在努力中

加油吧,我算是刚刚报道的
作者: zcy黑马    时间: 2015-5-31 01:22
微凉的暮色 发表于 2015-5-30 00:37
这个数组 确实麻烦

是啊 ,很麻烦的说,
作者: zcy黑马    时间: 2015-5-31 01:24
guojiadui 发表于 2015-5-30 15:59
这是我的

这个估计除了当事人,很难看懂,我看了看,大致思想咱俩是差不多的,就是代码都挺乱的
作者: zcy黑马    时间: 2015-5-31 01:25
柒仴、看雲佉 发表于 2015-5-30 22:57
好神奇。。

好吧,神奇的数组
作者: Animal    时间: 2015-5-31 09:27

你可以任意输入一个数字代表
作者: zcy黑马    时间: 2015-6-1 00:37
Animal 发表于 2015-5-31 09:27
你可以任意输入一个数字代表

+1.。。。。。。。。。。
作者: 谢晓明    时间: 2015-6-1 01:12
真心学习了,大神
作者: zcy黑马    时间: 2015-6-1 22:53
谢晓明 发表于 2015-6-1 01:12
真心学习了,大神

萌萌哒头像。
作者: zcy黑马    时间: 2015-10-19 23:18
安卓小伙伴们加油。。。
作者: 爨oooo    时间: 2015-10-20 10:16
虽然没学到,但是感觉很厉害的样子




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2