java蛇形矩阵输出方法(顺时针、逆时针)
2017-10-31 14:21
344 查看
package myTest.test; public class TestMatrix { /** * 蛇形矩阵输出方法(顺时针、逆时针输出仅仅在开始的方向不同,顺时针向右,逆时针向下) * * @param N * @param circleDir * @return */ private static int[][] getMatrix(int N, CircleDir circleDir) { Direct direct = Direct.RIGHT;// 默认向右,顺时针方向 if (circleDir == CircleDir.ANTICLOCKWISE) {// 逆时针方向,开始方向向下 direct = Direct.DOWN; } int[][] ints = new int ; int result = 0; int X = 0, Y = 0; while (result < N * N) {//判断条件不能是<= switch (direct) { case RIGHT: while (Y < N && ints[X][Y] == 0) { result++; ints[X][Y] = result; Y++; } direct = Direct.DOWN;// 改变方向,向下 X++;//向下需要X坐标+1 Y--;//补偿Y坐标在上面循环体的偏移 break; case DOWN: while (X < N && ints[X][Y] == 0) { result++; ints[X][Y] = result; X++; } direct = Direct.LEFT;// 改变方向,向左 Y--;//向左需要Y坐标-1 X--;//补偿X坐标在上面循环体的偏移 break; case LEFT: while (Y >= 0 && ints[X][Y] == 0) { result++; ints[X][Y] = result; Y--; } direct = Direct.UP;// 改变方向,向上 X--;// 向上X坐标-1 Y++;// 补偿Y坐标在上面循环体的偏移 break; case UP: while (X >= 0 && ints[X][Y] == 0) { result++; ints[X][Y] = result; X--; } direct = Direct.RIGHT;// 改变方向,向右 Y++;// 右转Y坐标+1 X++;// 补偿X坐标在上面循环体的偏移 break; } } return ints; } //旋转方向 enum CircleDir { CLOCKWISE, // 顺时针 ANTICLOCKWISE;// 逆时针 } //移动方向 enum Direct { UP, // 向上 DOWN, // 向下 LEFT, // 向左 RIGHT;// 向右 } /** * 测试方法 * * @param args */ public static void main(String[] args) { int N = 7; System.out.println("=======================顺时针==================="); int[][] ints = getMatrix(N, CircleDir.CLOCKWISE);// 顺时针输出 for (int i = 0; i < N; i++) {// 遍历顺时针二维数组 for (int j = 0; j < N; j++) { System.out.print(ints[i][j] + " "); } System.out.println(); } System.out.println("=======================分割线==================="); System.out.println("=======================逆时针==================="); int[][] intAntis = getMatrix(N, CircleDir.ANTICLOCKWISE);// 逆时针输出 for (int i = 0; i < N; i++) {// 遍历逆时针二维数组 for (int j = 0; j < N; j++) { System.out.print(intAntis[i][j] + " "); } System.out.println(); } } }
运行结果:
相关文章推荐
- java顺时针、逆时针打印矩阵
- 矩阵顺时针螺旋输出2种不同的方法。
- java顺时针、逆时针打印矩阵
- Java实现输出回环数(螺旋矩阵)的方法示例
- Java 小例子:按照顺时针或逆时针方向输出一个数字矩阵
- Java --随意输入N*N矩阵, 顺时针旋转输出
- Java实现的按照顺时针或逆时针方向输出一个数字矩阵功能示例
- 矩阵顺时针螺旋输出2种不同的方法。
- java逆时针螺旋输出矩阵
- JAVA代码—算法基础:将N*N的矩阵顺时针旋转90度输出元素
- 矩阵蛇形填数和顺时针输出
- java顺时针、逆时针打印矩阵
- Java实现顺时针输出螺旋二维数组的方法示例
- Java输出数据的对齐方法
- java第七周实验封装一类对象English,该类对象具有一种功能printEnglish输出英文字母表。再封装一类对象Greek,该类必须是English的子类,该类对象不仅可以调用方法printE
- 逆时针输出回形矩阵图(Java版本)
- java-51-输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。
- 顺时针打印矩阵 (JAVA实现)
- java中的Date方法输出的时间与系统时间不符
- n*n阶矩阵逆时针输出