java实现二维数组回形输出

对于二维数组 1,2,3

                       4,5,6

                       7,8,9

红色部分代表一个回行,目标是输出按照顺时针方向,先输出红色的,再输出黑色的。


我的思路是:先输出外圈,再输出里圈。每一圈,都有一个开始和一个结束,所以打印每一行的时候都需要给一个开始的地方(startX,startY)和一个结束的地方(endX,endY).

 private static void printRC(int [][]matrix,int startX,int startY,int endX,int endY){
  boolean isRow=startX==endX;
  boolean isRise=isRow?startY<endY:startX<endX;
  if (isRow){
  if (isRise) {
  for (int i=startY;i<=endY;i++) {
  System.out.print(matrix[startX][i]+" ");
  }
  }else{
  for (int i=startY;i>=endY;i--) {
  System.out.print(matrix[startX][i]+" ");
  }
  }
  }else{
  if (isRise) {
  for (int i=startX;i<=endX ;i++){
  System.out.print(matrix[i][startY]+" ");
    }
  }else{
  for (int i=startX;i>=endX ;i-- ) {
  System.out.print(matrix[i][startY]+" ");
  }
  }
  }
 }
 public static void printD(int a[][],int totalRowNum,int totalColNum){
  int startX=0;
  int startY=0;
  int endX=totalRowNum-1;
  int endY=totalColNum-1;
  while(startX<=endX|| startY<=endY){
  if(startY<=endY)//从左到右
    {
    printRC(a,startX,startY,startX,endY);
    }else{
    break;
    }
    if(startX+1<=endX){//从上到下
    printRC(a,startX+1,endY,endX,endY);
    }else{
     break;
    }
    if(endY-1>=startY){//从右到左
    printRC(a,endX,endY-1,endX,startY);
    }else{
    break;
    }
    if(endX-1>=startX+1)//从下到上
    {
    printRC(a,endX-1,startY,startX+1,startY);
    }else{
    break;
    }
    System.out.println();
    System.out.println("********************");

//一圈完毕
    startX++;
    startY++;
    endX--;
    endY--;
    }
 }

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值