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

© zcy黑马 中级黑马   /  2015-5-19 23:44  /  1444 人查看  /  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 个回复

倒序浏览
你可以任意输入一个数字代表
回复 使用道具 举报
不错,顶一个
回复 使用道具 举报
菜鸟表示看不懂,不过好腻害的样子
回复 使用道具 举报
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下一页
您需要登录后才可以回帖 登录 | 加入黑马