二维思维能力
输出前:{1,2,3,4}
{5,6,7,8}
{9,10,11,12}};
输出后:
1 2 5 9 6 3 4 7 10 11 8 12
public class z形打印二维数组 {
public static void main(String[] args) {
int [][]matrix= {
{1,2,3,4},
{5,6,7,8},
{9,10,11,12}};
print(matrix);
}
private static void print(int[][] matrix) {
// TODO Auto-generated method st
int r=0,m=matrix.length;
int c=0,n=matrix[0].length;//进行初始化
boolean lr=true;//判断从左到右true 从右到左是false
while(r<m&&c<n) {
//从左下到右上的斜线
if(lr) {//从左到右打印第一个元素
System.out.println(matrix[r][c]+" ");//
//现在第一行,列末到边界,这是只能向右走;
if(r==0&&c<n-1) {
lr=!lr;//方向切换
c++;
continue;
}else if(r>0&&c==n-1) {//现在在最后一列,只能向下走
lr=!lr; //方向切换下下
r++;
continue;
}else {//继续走上坡
r--;
c++;//打印 6 3 8
}
}else {//走下坡
System.out.print(matrix[r][c]+" ");//2 5 4 7 10 12
if(c==0&&r<m-1) {//走到第一列,只能往下走//
lr=!lr;
r++;//5-9向下下打印5
continue;
}else if(r==m-1) {//到最后一行,只能往右走
lr=!lr;//左右
c++;
continue;
}else {//下坡路 7 10
r++;
c--;
}
}
}
}
}