之字型打印二维数组

来源:互联网 发布:淘宝账户商家登陆 编辑:程序博客网 时间:2024/06/05 04:58
package com.dl.numprint;


public class ZPrint {

   public static void zPrint(int[][] array)
   {
  int rr=0; //纵向移动横坐标
  int rc=0;//纵向移动纵坐标
  int cr=0;//横向移动横坐标
  int cc=0;//横向移动纵坐标
  boolean flag=false;// 从上向下打印还是从下向上打印
  if(array==null || array.length==0 ||array[0].length==0)
  return;
  int rowNum=array.length-1;
  int colNum=array[0].length-1;
  while(cr!=rowNum+1)
  {   printLine(array,rr,rc,cr,cc,flag);
      rc=rr==rowNum?rc+1:rc;
  rr=rr==rowNum?rr:rr+1;//特别注意rc 和 rr的赋值顺序,若反过来则出错
      
      cr=cc==colNum?cr+1:cr;
      cc=cc==colNum?cc:cc+1;
  
      flag=!flag;
    
  }
 
   }
   
   public static void printLine(int[][] array,int rr,int rc,int cr,int cc,boolean flag)
   {
  if(flag)
  {
while(cr!=rr+1)
{
System.out.print(array[cr++][cc--]+" ");
}
  }
  if(!flag)
  {
 while(rc!=cc+1)
 {
 System.out.print(array[rr--][rc++]+" ");
 }
  }
   }
   
   public static void main(String[] args) {
  int[][] matrix = { {1}};
//System.out.print("LENGTH:"+matrix.length);
zPrint(matrix);
}
}
0 0
原创粉丝点击