Java实现顺时针输出螺旋二维数组的方法示例
发布时间 - 2026-01-10 22:55:43 点击率:次最近看到一道有点意思的逻辑算法题,便着手实现一下。题目是要求打印 出N*N顺时针螺旋数组,规律如下:
// 1 2 3 4 5 // 16 17 18 19 6 // 15 24 25 20 7 // 14 23 22 21 8 // 13 12 11 10 9
Java 实现示例代码如下:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int[][] rect = new int[n + 1][n + 1];
int x = 0, y = 1; // 当前遍历的位置
int px = 1, py = 0; // x/y 在当前循环方向的增量
int pn = n; // 该方向上还需要多少个数字(会递减,因为顺时针往里缩)
int sum = n; // 当前遍历方向的终点位置
/** 目标输出顺时针 */
// 1 2 3 4 5
// 16 17 18 19 6
// 15 24 25 20 7
// 14 23 22 21 8
// 13 12 11 10 9
/** 翻转矩阵为逆时针(为了便于后面逻辑处理,输出的时候再翻转回去) */
// 1 16 15 14 13
// 2 17 24 23 12
// 3 18 25 22 11
// 4 19 20 21 10
// 5 6 7 8 9
for (int i = 1; i <= n * n; i++) { // 翻转矩阵循环
// 移到下一个点(第一次方向1->5 x增量为1, y的增量为0, 第二次方向为6->9,x增量为0,y增量为1,pn减少一个)
x += px;
y += py;
rect[x][y] = i;
if (i == sum) { // 到达该方向的最后一个点
if (px == 1 || px == -1) { // x的增量不为0,则为竖向 -> 横向
pn = pn - 1; // 竖向变为横向的时候,该方向上数字的个数会减少一个
sum = sum + pn;
py = px;
px = 0;
} else { // x的增量为0, y的增量不为0,则为横向 -> 竖向
sum = sum + pn;
px = -py;
py = 0;
}
}
}
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
System.out.print(rect[j][i] + "\t"); // 翻转复原输出
}
System.out.println();
}
}
}
输出测试
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家学习或者使用java能带来一定的帮助,如果有疑问大家可以留言交流。
# 螺旋打印二维数组
# 二维数组顺时针输出
# java二维数组输出矩阵
# java二维数组遍历的2种代码
# Java数组的定义、初始化、及二维数组用法分析
# Java不指定长度的二维数组实例
# java实现二维数组转置的方法示例
# java实现二维数组转json的方法示例
# 浅谈java中的一维数组、二维数组、三维数组、多维数组
# java定义二维数组的几种写法(小结)
# Java二维数组查找功能代码实现
# 遍历
# 顺时针
# 不为
# 则为
# 这篇文章
# 移到
# 上还
# 往里
# 多少个
# 有疑问
# Java
# br
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel如何发送系统通知_Laravel Notifications实现多渠道消息通知
使用C语言编写圣诞表白程序
Windows10如何更改计算机工作组_Win10系统属性修改Workgroup
linux top下的 minerd 木马清除方法
php静态变量怎么调试_php静态变量作用域调试技巧【解答】
利用 Google AI 进行 YouTube 视频 SEO 描述优化
Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】
如何在IIS中配置站点IP、端口及主机头?
如何利用DOS批处理实现定时关机操作详解
Laravel如何集成微信支付SDK_Laravel使用yansongda-pay实现扫码支付【实战】
如何在阿里云虚拟服务器快速搭建网站?
专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?
想要更高端的建设网站,这些原则一定要坚持!
Laravel如何实现文件上传和存储?(本地与S3配置)
logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?
nginx修改上传文件大小限制的方法
Laravel如何集成第三方登录_Laravel Socialite实现微信QQ微博登录
HTML5空格在Angular项目里怎么处理_Angular中空格的渲染问题【详解】
音响网站制作视频教程,隆霸音响官方网站?
Swift中循环语句中的转移语句 break 和 continue
Laravel如何优化应用性能?(缓存和优化命令)
网站制作壁纸教程视频,电脑壁纸网站?
免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?
香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化
高端云建站费用究竟需要多少预算?
Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置
JS经典正则表达式笔试题汇总
如何快速上传自定义模板至建站之星?
如何在 Go 中优雅地映射具有动态字段的 JSON 对象到结构体
怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?
Laravel如何使用Seeder填充数据_Laravel模型工厂Factory批量生成测试数据【方法】
详解Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点
Laravel如何实现多表关联模型定义_Laravel多对多关系及中间表数据存取【方法】
Laravel路由怎么定义_Laravel核心路由系统完全入门指南
Edge浏览器提示“由你的组织管理”怎么解决_去除浏览器托管提示【修复】
弹幕视频网站制作教程下载,弹幕视频网站是什么意思?
网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?
WEB开发之注册页面验证码倒计时代码的实现
Laravel如何安装Breeze扩展包_Laravel用户注册登录功能快速实现【流程】
详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)
android nfc常用标签读取总结
如何用PHP工具快速搭建高效网站?
如何选择可靠的免备案建站服务器?
Laravel storage目录权限问题_Laravel文件写入权限设置
js实现点击每个li节点,都弹出其文本值及修改
青岛网站建设如何选择本地服务器?
Laravel策略(Policy)如何控制权限_Laravel Gates与Policies实现用户授权
Laravel如何理解并使用服务容器(Service Container)_Laravel依赖注入与容器绑定说明
Windows10怎样连接蓝牙设备_Windows10蓝牙连接步骤【教程】
如何基于云服务器快速搭建个人网站?
下一篇:laravel怎么截取字符串
下一篇:laravel怎么截取字符串

