java如何实现顺时针/逆时针打印矩阵操作

小编给大家分享一下java如何实现顺时针/逆时针打印矩阵操作,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

创新互联建站是一家专注于成都做网站、网站制作与策划设计,黄岛网站建设哪家好?创新互联建站做网站,专注于网站建设十余年,网设计领域的专业建站公司;建站业务涵盖:黄岛等地区。黄岛做网站价格咨询:028-86922220

java实现的顺时针/逆时针打印矩阵操作。具体如下:

public class SnakeMatrix {  /**   * 定义矩阵的阶数   */  private int n;  //填充矩阵的值  private int k = 1;  private int[][] data;  /**   * 定义矩阵移动的方向   */  public enum Direction {    left, right, up, down,  }  SnakeMatrix(int n) {    this.n = n;    data = new int[n][n];  }  public void clockwisePrintMatrix() {    //定义行数    int rowLen = data.length;    //定义列数    int columnLen = data.length;    //移动方向    Direction direction = Direction.right;    //定义上边界    int upBound = 0;    //定义下边界    int downBound = rowLen - 1;    //定义左边界    int leftBound = 0;    //定义右边界    int rightBound = columnLen - 1;    //矩阵当前行数    int row = 0;    //矩阵当前列数    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();    }  }}

首先呢上面是定义一个工具类,

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

直接进行使用,有两个方法,一个正序一个倒序

以上是“java如何实现顺时针/逆时针打印矩阵操作”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!


网站栏目:java如何实现顺时针/逆时针打印矩阵操作
网页链接:http://scyanting.com/article/jdecsh.html