首页 > 代码库 > 螺旋输出一组数组数据的实现

螺旋输出一组数组数据的实现

要螺旋输出一组数据,实现的解决方案:采用二维数组的形式来解决

  结果如下:

     

wKioL1RKZE7yiXE1AAFIVslP4Go719.jpg

wKiom1RKY_7Ch7RJAACGlf3xmhc684.jpg

实现如下:

  这里我们定义一个类 

     public class LoopSort{
        public static void main(String[] args){
               //要螺旋输出的数据的个数
            Scanner s=new Scanner(System.in);
            System.out.println("请输入螺旋输出的数据的行和列:");
            int number=s.nextInt();
            int code=s.nextInt();
            s.close();
            //定义一个存放数据的二维数组
            int[][] numbers=new int[number][code];
            //定义最小列
            int minX=0;
            //定义最大列
            int maxX=code-1;
            //定义最小行
            int minY=0;
            //定义最大行
            int maxY=number-1;
            //定义数据自增变量
            int count=0;
           
           while(minX<=maxX){
                  //行不变,为最小行,列从小到大
                for(int i=minX;i<=maxX;i++){
                   numbers[minY][i]=++count;
                }
                //这样第一行就不会在执行,就让最小行加一
                minY++;
                //列不变,为最大列,行从小到大
                for(int i=minY;i<=maxY;i++){
                   numbers[i][maxX]=++count;
                }
                //这之后最右边的列不再执行,就让最大列减一
                maxX--;
                //行不变,为最大行,列从大到小
                for(int i=maxX;i>=minX;i--){
                  numbers[maxY][i]=++count;
                }
                //最底层的行不再执行,就让最大行减一
                maxY--;
                //列不变,为最小列,行从大到小
                for(int i=maxY;i>=minY;i--){
                   numbers[i][minX]=++count;
                }
                //此时最左边的列不再执行,就让最小列加一
                minX++;
           }
           
           // 对二维数组进行遍历,循环输出数组中保存的数据
           for(int[] i:numbers){
              for(int j:i){
                 String val=j<10 ? "0" : "";
                 System.out .print(val+j+" ");
              }
              System.out.println();
           }
        }
     }


螺旋输出一组数组数据的实现