您好,登錄后才能下訂單哦!
小編給大家分享一下java如何實(shí)現(xiàn)順時(shí)針/逆時(shí)針打印矩陣操作,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
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è)倒序
以上是“java如何實(shí)現(xiàn)順時(shí)針/逆時(shí)針打印矩陣操作”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。