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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. package FileDemo;

  2. import java.io.BufferedReader;
  3. import java.io.IOException;
  4. import java.io.InputStreamReader;

  5. /**
  6. * 逆时针螺旋数组
  7. * @author Administrator
  8. *
  9. */
  10. public class LuoXuan {
  11.         private int[][] numArray;
  12.         int x=0;
  13.         int y=0;
  14.         /**
  15.          * @param args
  16.          */
  17.         public static void main(String[] args) {
  18.                 // TODO Auto-generated method stub
  19.                 LuoXuan loopACW = new LuoXuan();
  20.                 loopACW.createArray();
  21.                 loopACW.printToConsole();
  22.         }
  23.         private void createArray() {
  24.                 int i=0,j=0;//数组下标
  25.                 int c=0;//层数,从0开始,每一层都是一个正方形(或长方形),总共有四条边,每一个边的角上,就是拐点
  26.                 int d=0;//0,表示第一条边,1,表示第二条边,2,表示第三条,3,表示第四条
  27.                 String s= null;
  28.                 try{
  29.                         BufferedReader bfr=new BufferedReader(new InputStreamReader(System.in));
  30.                         System.out.println("请输入行列数,逗号隔开");
  31.                         s=bfr.readLine();               
  32.                 }
  33.                 catch(IOException e){}
  34.                 String[] a = s.split(",");
  35.                 x = Integer.parseInt(a[0]);
  36.                 y = Integer.parseInt(a[1]);
  37.                 numArray = new int[x][y];
  38.             int maxValue = x*y;
  39.             
  40.             for(int k=1;k<=maxValue;k++){
  41.                     if(d==0){
  42.                             if(i==x-c-1){//第一个拐点
  43.                                     d=1;
  44.                             }else{
  45.                                     numArray[i][j]=k;
  46.                                     i++;
  47.                                     continue;
  48.                             }
  49.                     }
  50.                     if(d==1){
  51.                             if(j==y-c-1){//第二个拐点
  52.                                     d=2;
  53.                             }else{
  54.                                     numArray[i][j]=k;
  55.                                     j++;
  56.                                     continue;
  57.                             }
  58.                     }
  59.                     if(d==2){
  60.                             if(i==c){//第三个拐点
  61.                                     d=3;
  62.                             }else{
  63.                                     numArray[i][j]=k;
  64.                                     i--;
  65.                                     continue;
  66.                             }
  67.                     }
  68.                     if(d==3){
  69.                             if(j==c+1){//第四个拐点的处理比较特殊
  70.                                     numArray[i][j]=k;
  71.                                     d=0;
  72.                                     c++;
  73.                                     i++;
  74.                                     continue;
  75.                             }else{
  76.                                     numArray[i][j]=k;
  77.                                     j--;
  78.                                     continue;
  79.                             }
  80.                     }         
  81.             }
  82.                
  83.         }
  84.        
  85.         private void printToConsole() {
  86.                 String space = "";
  87.                 for(int i=0;i<x;i++){
  88.                         for(int j=0;j<y;j++){
  89.                                 if(numArray[i][j]<10){
  90.                                         space="  ";
  91.                                 }else{
  92.                                         space=" ";
  93.                                 }
  94.                                 System.out.print(numArray[i][j]+space);
  95.                         }
  96.                         System.out.println();//换行
  97.                 }
  98.                
  99.         }


  100. }
复制代码


1 个回复

正序浏览
赞一个,很给力啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马