您的位置:首页 > 编程语言 > Java开发

java之顺时钟打印矩阵

2015-06-10 15:00 513 查看
题目:输入一个矩阵,按照从外向里以顺顺时针的顺序依次打印出每一个数字。例如:输入的如下矩阵:

1 2 3 4

5 6 7 8

9 10 11 12

13 14 15 16

则依次打印出数字1、2、3、4、8、12、16、15、14、13、9、5、6、7、11、10.

package BitCount;

public class PrintMetrix {

public void PrintMetrixClockwisely(int[][] number, int colums, int rows) {
if (number == null || rows <= 0 || colums <= 0)
return;
int start = 0;
while (colums > start * 2 && rows > start * 2) {
PrintMetrixClock(number, colums, rows, start);

++start;

}

}

public void PrintMetrixClock(int[][] number, int colums, int rows, int start) {
int endX = colums - 1 - start;
int endY = rows - 1 - start;
// 从左到右打印一行
for (int i = start; i <= endX; i++) {
System.out.print(number[start][i] + " ");

}
// 从上到下打印
if (start < endY) {
for (int i = start + 1; i <= endY; i++) {
System.out.print(number[i][endY] + " ");

}

}
// 从右到左打印
if (start < endX && start < endY) {
for (int i = endX - 1; i >= start; i--) {
System.out.print(number[endY][i] + " ");

}
}

if (start < endX && start < endY - 1) {
for (int i = endY - 1; i >= start + 1; i--) {
System.out.print(number[i][start] + " ");

}
}

}

// 从下到上打印
public static void main(String[] args) {
int[][] num = { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 9, 10, 11, 12 },
{ 13, 14, 15, 16 } };
PrintMetrix printMetrix = new PrintMetrix();
printMetrix.PrintMetrixClockwisely(num, 4, 4);
}

}
输出结果为:
1 2 3 4 8 12 16 15 14 13 9 5 6 7 11 10 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: