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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章