/****************************************************************************************
*题目:顺时针打印矩阵
* 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。例如:如果输入如下矩阵
* 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
*时间:2015年8月31日09:02:36
*文件:MergeLink.java
*作者:cutter_point
****************************************************************************************/
package bishi.Offer50.y2015.m08.d31;
public class MatrixCircle
{
private int numbers[][];
public MatrixCircle()
{
}
//构造函数
public MatrixCircle(int nums[][])
{
numbers = nums;
}
/**
* 打印一圈
* @param start
*/
private void printCircle(int start)
{
int rows = numbers.length;
int columns = numbers.clone().length;
int endColumn = columns - 1 - start;
int endRow = rows - 1 - start;
//从左到右
for(int i = start; i <= endColumn; ++i)
{
int number = numbers[start][i];
System.out.print(number + "\t");
}//for
//从上到下
if(endRow > start)
{
for(int i = start + 1; i <= endRow; ++i)
{
int number = numbers[i][endColumn];
System.out.print(number + "\t");
}//for
}//if
//从右到左
if(start < endColumn && start < endRow)
{
for(int i = endColumn - 1; i >= start; --i)
{
int number = numbers[endRow][i];
System.out.print(number + "\t");
}//for
}//if
//从下到上
if(start < endRow - 1 && start < endColumn)
{
for(int i = endRow - 1; i > start; --i)
{
int number = numbers[i][start];
System.out.print(number + "\t");
}//for
}//if
System.out.println();
}
/**
* 输入我们矩阵
*/
public void printMaxtrixClockwisely()
{
if(numbers == null)
return;
int start = 0;
int rows = numbers.length;
int columns = numbers.clone().length;
//我们终止的条件是,start到了中间位置
while(start * 2 < rows && start * 2 < columns)
{
this.printCircle(start);
++start;
}//while
}
}
我发现了junit的测试的时候,要求这个类的构造函数是一个public并且是无参数的类,所以我们这个构造函数里面有参数,所以我们得重新写个测试类
package bishi.Offer50.y2015.m08.d31;
public class Test
{
@org.junit.Test
public void Test()
{
int numbers[][] =
{
{1,2,3,4},
{5,6,7,8},
{9,10,11,12},
{13,14,15,16}
};
MatrixCircle mc = new MatrixCircle(numbers);
mc.printMaxtrixClockwisely();
}
}
OutPut:
1 2
3 4 8
12 16
15 14 13
9 5
6 7 11
10
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/cutter_point/article/details/48131189