温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2021-09-27 09:21:37 来源:亿速云 阅读:258 作者:小新 栏目:编程语言

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

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如何实现顺时针/逆时针打印矩阵操作”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI