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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zcy黑马 中级黑马   /  2015-5-19 23:44  /  1316 人查看  /  24 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我自己写了点,今天没事发个帖子,求指教
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         
*/

24 个回复

倒序浏览
你可以任意输入一个数字代表
回复 使用道具 举报
不错,顶一个

点评

谢谢  发表于 2015-5-21 00:57
回复 使用道具 举报
菜鸟表示看不懂,不过好腻害的样子

点评

。。。。慢慢来  发表于 2015-5-21 00:58
回复 使用道具 举报
0.0我是来求黑马币的
回复 使用道具 举报
这个帖子算是废了,
回复 使用道具 举报
厉害厉害 螺旋矩阵研究了好久没搞定
回复 使用道具 举报
新人报道,正在努力中
回复 使用道具 举报
:lol
这个数组 确实麻烦
回复 使用道具 举报
一直没做出来,艾玛
回复 使用道具 举报
这是我的
  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.        
复制代码
回复 使用道具 举报
好神奇。。
回复 使用道具 举报
小峰Raul 发表于 2015-5-30 00:11
厉害厉害 螺旋矩阵研究了好久没搞定

加油吧,我这只是一个方向
回复 使用道具 举报
jiatengde 发表于 2015-5-30 00:34
新人报道,正在努力中

加油吧,我算是刚刚报道的
回复 使用道具 举报

是啊 ,很麻烦的说,
回复 使用道具 举报

这个估计除了当事人,很难看懂,我看了看,大致思想咱俩是差不多的,就是代码都挺乱的
回复 使用道具 举报

好吧,神奇的数组
回复 使用道具 举报

你可以任意输入一个数字代表
回复 使用道具 举报
Animal 发表于 2015-5-31 09:27
你可以任意输入一个数字代表

+1.。。。。。。。。。。
回复 使用道具 举报
真心学习了,大神
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马