java 螺旋打印_java实现:二维数组螺旋打印输出
朋友出的一道算法题,大概意思是:输入任意一个数n,用二维数组打印出螺旋图案(如上左图,输入5),
我自己的主要思想是分层,由外向内,一圈为一层,然后每层又分为上右下左(top-right-bottom-left)四个方向,每个方向单独画。
过程中遇到的问题:
1.啥时候结束循环?
当(sum-1)=(n*n)时。
2.结束循环的条件判断需要在哪儿写?
刚开始我就在循环体最后面写的,然后就一直抛异常了(哎,心累),后来我就在每个方向画完后,就写了个结束循环的判断。
来直接上代码了(简单实现了下):
public static void main(String[] args) {
int n = 5;
int a[][] = luoxuan(n);
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
System.out.print(" " + a[i][j] + " ");
}
System.out.println("\n");
}
}
/**
* 螺旋展示
* @param n 任意数,负数默认为1.
* @return
*/
private static int[][] luoxuan(int n) {
if (n <= 0) {
n = 1;
}
int a[][] = new int[n][n];
int top = 0, bottom = n - 1;//上下
int left = 0, right = n - 1;//左右
int i = top, j = left;
int sum = 1;
while (true) {
//上
while (j != right + 1) {
a[i][j] = sum;
sum++;
j++;
}
j--;
if ((sum - 1) == (n * n)) {
break;//退出条件
}
top++;
i = top;
//右
while (i != bottom + 1) {
a[i][j] = sum;
sum++;
i++;
}
i--;
if ((sum - 1) == (n * n)) {
break;
}
right--;
j = right;
//下
while (j != left - 1) {
a[i][j] = sum;
sum++;
j--;
}
j++;
if ((sum - 1) == (n * n)) {
break;
}
bottom--;
i = bottom;
//左
while (i != top - 1) {
a[i][j] = sum;
sum++;
i--;
}
i++;
if ((sum - 1) == (n * n)) {
break;
}
left++;
j = left;
}
System.out.println("n="+n+",i=" + i + ",j=" + j + ",sum=" + sum);
return a;
}
java 螺旋打印_java实现:二维数组螺旋打印输出相关推荐
- Java IDEA Debug进制二维数组
1.Debug模式 1.1 什么是Debug模式 是供程序员使用的程序调试工具,它可以用于查看程序的执行流程,也可以用于追踪程序执行过程来调试程序. 1.2 Debug介绍与操作流程 如何加断点 选择 ...
- 《漫画算法2》源码整理-5 二维数组螺旋输出
二维数组螺旋输出 public class SpiralOrder {public static List<Integer> spiralOrder(int[][] matrix) {Li ...
- java读取图片成rgb二维数组
全栈工程师开发手册 (作者:栾鹏) java教程全解 java读取图片成rgb二维数组 测试代码 public static void main(String[] args) {Color[][] a ...
- java二维数组矩阵_java使用二维数组开发五子棋
主要使用到的技术: java基础语法 java面向对象思想 java数组,二维数组 java异常处理 主要步骤和思路: 1,制作一个棋盘类.棋盘类里面有行属性,列属性,二维数组属性. 有一个打印棋盘的 ...
- 【Java】 杨辉三角 二维数组打印杨辉三角
Tips 打印三角的操作 : 每行打印前预留空格 打印指定数量的星号后换行 重复循环打印直至完成所有打印结果 杨辉三角: 三角规律空格最大对称值为 5 大于 5 则会变形 三角规律为当前值为上一个值加 ...
- java二维数组怎么看_java、二维数组详解!
/* java 二维数组的概念 使用方法! 1.什么是二维数组? 答案:数组的数组! 他的每一个元素都是数组!二维数组是(存储一维数组的)一维数组. 2.如何定义?(以二维数组为列) int arr[ ...
- java语言二维数组转置_java实现二维数组转置的方法示例
本文实例讲述了java实现二维数组转置的方法.分享给大家供大家参考,具体如下: 这里在文件中创建Test2.Exchange.Out三个类 在Exchange类中编写exchange()方法,在方法中 ...
- java 二维数组位置_java 找到二维数组指定元素的位置
这个是代码编译时没有问题运行出错.主要功能是首先将txt格式文本导入二维数组,然后在二维数组中查找指定元素的行号和列号.运行结果出错显示为:importjava.util.*;importjava.i ...
- java txt 二维数组_java 将一个二维数组存到txt文件里,然后再读取
java 将一个二维数组存到txt文件里,然后再读取 mip版 关注:286 答案:3 悬赏:30 解决时间 2021-01-26 21:40 已解决 2021-01-26 04:05 将一个d ...
最新文章
- python组成三位无重复数字_Python生成十万个无序且唯一的数字
- Oracle Primavera P6 R84单机版安装教程
- volatile、const的用法
- 将整张网页存成png图片
- 02 | 纵览全局:把握 Netty 整体架构脉络
- 低配本用win10服务器系统,低配电脑装win10最早版可以吗
- 近 10 年新秀编程语言大 PK,Pick 它!
- SpringSecurity系列(二) Spring Security入门
- 计算机注销之后一直黑屏,win7系统注销出现黑屏怎么办_win7系统注销出现黑屏的修复办法...
- 详解SQL2005中的AWE
- HDU 1754 I Hate It 线段树RMQ
- java 生成拼音_java 根据汉字生成拼音全拼或拼音首字母
- 界面设计配色方案说明图一(含RGB配色表)
- python实现简单购物系统
- 移动硬盘拒绝访问怎么修复?
- 关于log4j:WARN No appenders could be found for logger (org.apache.hadoop.metrics2.li)的问题
- StarUML for MAC 破解
- 基于单片机的测量心率脉搏健康系统设计与
- 如何进行git ssh文件的配置
- 哨兵2A数据的下载与处理
热门文章
- 德国交通标志 (若干讲解)
- ASP.NET实现页面跳转三种方式
- Java开发者该学习哪些东西提高竞争力?灵魂拷问
- android 椭圆轨迹旋转,Android 倾斜椭圆绘制方法
- Springboot毕设项目电子营业执照系统t4g7g(java+VUE+Mybatis+Maven+Mysql)
- LDR6023C应用于充电加听歌领域,各大转接器品牌都应用于它(LDR6023C)
- 今天的Django教训汇总:pyecharts可以循环叠加-20211021
- 【git】 全局设置用户名、密码、邮箱
- 都有哪些机型支持鸿蒙,支持鸿蒙系统的手机都有什么
- 我用YOLOv5做情感识别