最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java實(shí)現(xiàn)的順時(shí)針/逆時(shí)針打印矩陣操作示例

 更新時(shí)間:2019年12月21日 12:28:11   作者:halaoda  
這篇文章主要介紹了java實(shí)現(xiàn)的順時(shí)針/逆時(shí)針打印矩陣操作,涉及java基于數(shù)組的矩陣存儲(chǔ)、遍歷、打印輸出等相關(guān)操作技巧,需要的朋友可以參考下

java實(shí)現(xiàn)的順時(shí)針/逆時(shí)針打印矩陣操作。分享給大家供大家參考,具體如下:

public class SnakeMatrix {
  /**
   * 定義矩陣的階數(shù)
   */
  private int n;
  //填充矩陣的值
  private int k = 1;
  private int[][] data;
  /**
   * 定義矩陣移動(dòng)的方向
   */
  public enum Direction {
    left, right, up, down,
  }
  SnakeMatrix(int n) {
    this.n = n;
    data = new int[n][n];
  }
  public void clockwisePrintMatrix() {
    //定義行數(shù)
    int rowLen = data.length;
    //定義列數(shù)
    int columnLen = data.length;
    //移動(dòng)方向
    Direction direction = Direction.right;
    //定義上邊界
    int upBound = 0;
    //定義下邊界
    int downBound = rowLen - 1;
    //定義左邊界
    int leftBound = 0;
    //定義右邊界
    int rightBound = columnLen - 1;
    //矩陣當(dāng)前行數(shù)
    int row = 0;
    //矩陣當(dāng)前列數(shù)
    int column = 0;
    while (true) {
      data[row][column] = k++;
      if (upBound == downBound && leftBound == rightBound) {
        // System.out.println(" upBound :"+upBound +" downBound :"+downBound+" leftBound :"+leftBound +" rightBound :"+rightBound);
        break;
      }
      switch (direction) {
        case right:
          if (column < rightBound) {
            ++column;
          } else {
            ++row;
            direction = Direction.down;
            ++upBound;
          }
          break;
        case down:
          if (row < downBound) {
            ++row;
          } else {
            --column;
            direction = Direction.left;
            --rightBound;
          }
          break;
        case up:
          if (row > upBound) {
            --row;
          } else {
            ++column;
            direction = Direction.right;
            ++leftBound;
          }
          break;
        case left:
          if (column > leftBound) {
            --column;
          } else {
            --row;
            direction = Direction.up;
            --downBound;
          }
          break;
        default:
          break;
      }
    }
    for (int i = 0; i < n; i++) {
      for (int j = 0; j < n; j++) {
        System.out.printf("%2d%s", data[i][j], " ");
      }
      System.out.println();
    }
  }
  public void anticlockwisePrintMatrix() {
    int rowLen = data.length;
    int columnLen = data.length;
    int leftBound = 0;
    int rightBound = columnLen - 1;
    int upBound = 0;
    int downBound = rowLen - 1;
    int row = 0;
    int column = 0;
    Direction direction = Direction.down;
    while (true) {
      data[row][column] = k++;
      if (rightBound == leftBound && upBound == downBound) {
        break;
      }
      switch (direction) {
        case down:
          if (row < downBound) {
            row++;
          } else {
            column++;
            direction = Direction.right;
            leftBound++;
          }
          break;
        case right:
          if (column < rightBound) {
            column++;
          } else {
            row--;
            direction = Direction.up;
            downBound--;
          }
          break;
        case up:
          if (row > upBound) {
            row--;
          } else {
            direction = Direction.left;
            column--;
            rightBound--;
          }
          break;
        case left:
          if (column > leftBound) {
            column--;
          } else {
            direction = Direction.down;
            row++;
            upBound++;
          }
          break;
        default:
          break;
      }
    }
    for (int i = 0; i < n; i++) {
      for (int j = 0; j < n; j++) {
        System.out.printf("%2d%s", data[i][j], " ");
      }
      System.out.println();
    }
  }
}

首先呢上面是定義一個(gè)工具類,

public class MainActivity extends AppCompatActivity {
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    int number = 5;
    SnakeMatrix snakeMatrix = new SnakeMatrix(number);
    snakeMatrix.anticlockwisePrintMatrix();
    //snakeMatrix.clockwisePrintMatrix();
  }
}

直接進(jìn)行使用,有兩個(gè)方法,一個(gè)正序一個(gè)倒序

更多關(guān)于java算法相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點(diǎn)技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總

希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • java 串口通信實(shí)現(xiàn)流程示例

    java 串口通信實(shí)現(xiàn)流程示例

    這篇文章主要介紹了java 串口通信實(shí)現(xiàn)流程示例,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • Java學(xué)習(xí)之反射機(jī)制及應(yīng)用場(chǎng)景介紹

    Java學(xué)習(xí)之反射機(jī)制及應(yīng)用場(chǎng)景介紹

    本篇文章主要介紹了Java反射機(jī)制及應(yīng)用場(chǎng)景,反射機(jī)制是很多Java框架的基石。非常具有實(shí)用價(jià)值,需要的朋友可以參考下。
    2016-11-11
  • SpringBoot項(xiàng)目使用aop案例詳解

    SpringBoot項(xiàng)目使用aop案例詳解

    這篇文章主要介紹了SpringBoot項(xiàng)目使用aop的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-04-04
  • java讀寫(xiě)二進(jìn)制文件的解決方法

    java讀寫(xiě)二進(jìn)制文件的解決方法

    本篇文章是對(duì)java讀寫(xiě)二進(jìn)制文件的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • ShardingSphere如何進(jìn)行sql重寫(xiě)示例詳解

    ShardingSphere如何進(jìn)行sql重寫(xiě)示例詳解

    這篇文章主要為大家介紹了ShardingSphere如何進(jìn)行sql重寫(xiě)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • SpringBoot中使用@ControllerAdvice注解詳解

    SpringBoot中使用@ControllerAdvice注解詳解

    這篇文章主要介紹了SpringBoot中使用@ControllerAdvice注解詳解,@ControllerAdvice,是Spring3.2提供的新注解,它是一個(gè)Controller增強(qiáng)器,可對(duì)controller中被 @RequestMapping注解的方法加一些邏輯處理,需要的朋友可以參考下
    2023-10-10
  • 深入分析Java內(nèi)存區(qū)域的使用詳解

    深入分析Java內(nèi)存區(qū)域的使用詳解

    本篇文章對(duì)Java內(nèi)存區(qū)域的使用進(jìn)行了詳細(xì)的介紹。需要的朋友參考下
    2013-05-05
  • Nacos與SpringBoot實(shí)現(xiàn)配置管理的開(kāi)發(fā)實(shí)踐

    Nacos與SpringBoot實(shí)現(xiàn)配置管理的開(kāi)發(fā)實(shí)踐

    在微服務(wù)架構(gòu)中,配置管理是一個(gè)核心組件,而Nacos為此提供了一個(gè)強(qiáng)大的解決方案,本文主要介紹了Nacos與SpringBoot實(shí)現(xiàn)配置管理的開(kāi)發(fā)實(shí)踐,具有一定的參考價(jià)值
    2023-08-08
  • Spring Boot啟動(dòng)時(shí)調(diào)用自己的非web邏輯

    Spring Boot啟動(dòng)時(shí)調(diào)用自己的非web邏輯

    在spring Boot中,有些代碼是WEB功能,例如API等,但是有些邏輯是非WEB,啟動(dòng)時(shí)就要調(diào)用并持續(xù)運(yùn)行的,該如何加載自己的非WEB邏輯呢,下面通過(guò)實(shí)例代碼給大家講解,一起看看吧
    2017-07-07
  • 深入淺出分析Java 類和對(duì)象

    深入淺出分析Java 類和對(duì)象

    面向?qū)ο竽耸荍ava語(yǔ)言的核心,是程序設(shè)計(jì)的思想。Java語(yǔ)言的面向?qū)ο蠹夹g(shù)包括了面向?qū)ο蠛兔嫦蜻^(guò)程的基本概念,面向?qū)ο蟮奶卣鳎琂ava語(yǔ)言的類,對(duì)象,修飾符,抽象類等一系列的知識(shí)點(diǎn)
    2022-03-03

最新評(píng)論

万安县| 金塔县| 安仁县| 都匀市| 平度市| 临泽县| 嘉荫县| 清新县| 纳雍县| 和田县| 台湾省| 偏关县| 达日县| 天水市| 兰坪| 瑞安市| 郸城县| 沅江市| 鄂温| 鹤峰县| 陆丰市| 从江县| 罗甸县| 高尔夫| 峨山| 治县。| 正定县| 宝鸡市| 土默特右旗| 五莲县| 广平县| 若羌县| 澄迈县| 金平| 克什克腾旗| 平湖市| 灵宝市| 宁化县| 屏东市| 璧山县| 太仓市|