1. 程式人生 > >Java實現回形數,只利用數組、循環和if-else語句

Java實現回形數,只利用數組、循環和if-else語句

oid 維數 () 打印 break util lse str 二維

import java.util.Scanner;

public class learn {
  public static void main(String[] args){

    System.out.println("請輸入你需要打印多少階的回形數:");
    Scanner scan = new Scanner(System.in);
    int num = scan.nextInt();    // 接收num,則打印num階的回形數
    scan.close();
    int[][] hui = new int[num][num];
    for(int i = 0,j = 0,flag = 0,theNum = 1; theNum<=(num*num);) {    //    i可視為二維數組的第i+1排,j可視為二維數組的j+1列;flag表示回形數進行的第flag+1圈;theNum為賦的值。

      if(j<num-flag) {        //回形數向右走時
        hui[i][j] = theNum;
        j++;
        theNum++;
      }
      else if(i+1<num-flag) {    //回形數向下走時
        hui[i+1][j-1] = theNum;
        theNum++;
        i++;
      }
      else {
        for(int m = num-flag-1,n = num -flag-1;;) {
          if(n>flag) {        //回形數向左走時
            n--;
            hui[m][n] = theNum;
            theNum++;
          }
          else if(m>flag+1) {        //回形數向右走時
            m--;
            hui[m][n] = theNum;
            theNum++;
          }
          else {
            i = flag+1;
            j = flag+1;
            flag++;
            break;
          }
        }
      }
    }
    for(int a = 0;a<num;a++) {
      for(int b = 0;b<num;b++) {
        System.out.printf("%d ",hui[a][b]);
      }
    System.out.println("\n");
    }
  }
}

Java實現回形數,只利用數組、循環和if-else語句