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);
}
}
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);
}
}