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
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
相关文章推荐
- struts2文件的上传
- eclipse启动错误
- Java 程序设计概述 - 和 - Fundamentals - 2015-6-10
- Java 中常用的设计模式?说明工厂模式?
- java数据库连接的几种方法
- Spring MVC 与 Struts 对比原理分析.
- Eclipse 安装Gradle插件
- Java线程安全(一)
- Spring+Mybatis 多数据源配置
- Java多线程系列--“JUC原子类”03之 AtomicLongArray原子类
- java web开发中要用到的各种文档
- Java NIO系列教程(一) Java NIO 概述
- Struts2文件上传与下载
- java设计模式----策略模式
- 在Eclipse中创建Maven多模块工程的例子
- 在Servlet(或者Filter,或者Listener)中使用spring的IOC容器
- Spring学习笔记(转+改)
- struts2与cookie实现自动登录
- JDK与JRE各种版本下载地址
- java分页技术