【Java】回形数
回形数
键盘读入一个整数n(1-20),以n为矩阵大小,把1,2,3,4,5…按顺时针螺旋的形式填入。

import java.util.Scanner;
public class HuiXingShu {
public static void main(String[] args) {
System.out.print("请输入一个整数:");
int lenth;
Scanner scanner = new Scanner(System.in);
lenth = scanner.nextInt();
int[][] array = new int[lenth][lenth];
int direction = 1;//判断方向,1从左往右,2从上往下,3从右往左,4从下往上。
int i = 0;
int j = 0;
int k;
for(k = 1;k <= lenth * lenth;k++) {
if(direction == 1) {
if(j < lenth && array[i][j] == 0)//不能先判断数组中元素是否为零,可能会越界
array[i][j++] = k;
else {
direction = 2;//更换方向为从上到下
k--;//这个数没有赋给数组,过了这轮循环又会加一,所以先减一
i++;//这一行已经填满数,往下挪一行
j--;//下标已经越界,往回挪一列
}
}
else if(direction == 2) {
if(i < lenth && array[i][j] == 0)//不能先判断数组中元素是否为零,可能会越界
array[i++][j] = k;
else {
direction = 3;//更换方向为从右到左
k--;//这个数没有赋给数组,过了这轮循环又会加一,所以先减一
j--;//这一列已经填满数,往左挪一列
i--;//下标已经越界,往上挪一行
}
}
else if(direction == 3) {
if(j >= 0 && array[i][j] == 0)//不能先判断数组中元素是否为零,可能会越界
array[i][j--] = k;
else {
direction = 4;//更换方向为从下到上
k--;//这个数没有赋给数组,过了这轮循环又会加一,所以先减一
i--;//这一行已经填满数,往上挪一行
j++;//下标已经越界,往回挪一列
}
}
else if(direction == 4) {
if(i >= 0 && array[i][j] == 0)//不能先判断数组中元素是否为零,可能会越界
array[i--][j] = k;
else {
direction = 1;//更换方向为从左到右
k--;//这个数没有赋给数组,过了这轮循环又会加一,所以先减一
j++;//这一列已经填满数,往右挪一列
i++;//下标已经越界,往下挪一行
}
}
}
//遍历输出
for(int[] x : array) {
for(int y : x)
System.out.printf("%3d",y);
System.out.println();
}
}
}
【Java】回形数的更多相关文章
- Java实现回形数,只利用数组、循环和if-else语句
import java.util.Scanner; public class learn { public static void main(String[] args){ System.out.pr ...
- java參数传递机制浅析
欢迎转载,转载请声明出处! ----------------------------------------- 前言: java语言中,參数的传递仅仅有一种机制.那就是值传递. 举例: 以下将通过几个 ...
- java线程数过高原因分析
作者:鹿丸不会多项式 出处:http://www.cnblogs.com/hechao123 转载请先与我联系. 一.问题描述 前阵子我们因为B机房故障,将所有的流量切到了A机房,在经历了推送+ ...
- java參数传递方式问题
java的參数传递方式到底是值传递还是引用传递,这一直是一个争论不休的问题,一直以来没有形成统一意见. 在这里,我也仅仅是说一说个人见解,不保证是对的,全当是抛砖引玉. 首先我的观点是java採用的是 ...
- Java參数传递方式
原文:http://blog.sina.com.cn/s/blog_59ca2c2a0100qhjx.html,我作了些改动并添加了一个实例,添加对照 本文通过内存模型的方式来讨论一下Java中的參数 ...
- Java将数据以Excel文件形式导出后台代码实现
下面代码实现所需jar包: tomcat-embed-core-8.5.11.jar: commons-lang3-3.0.1.jar: commons-io-2.5.jar: poi-3.9.jar ...
- java猜数游戏
java随机数的产生 int number=(int)(Math.random()*10+1) Math.random()*n //n个随机数,从0开始 do{}while循环 //猜数,1到10的随 ...
- java猜数游戏(新手记录每天的作业)
//导入包 import java.util.Scanner;import java.util.Random; //定义一个类 public class Zcs{ //公共静态的主方法 public ...
- JAVA取数两个数组交集,考虑重复和不重复元素
1.考虑不重复元素,重复元素不添加 import java.awt.List; import java.util.ArrayList; import java.util.TreeSet; public ...
随机推荐
- GoLang设计模式17 - 访客模式
说明 访客模式是一种行为型设计模式.通过访客模式可以为struct添加方法而不需要对其做任何调整. 来看一个例子,假如我们需要维护一个对如下形状执行操作的库: 方形(Square) 圆形(Circle ...
- 异步FIFO总结+Verilog实现
异步FIFO简介 异步FIFO(First In First Out)可以很好解决多比特数据跨时钟域的数据传输与同步问题.异步FIFO的作用就像一个蓄水池,用于调节上下游水量. FIFO FIFO是一 ...
- linux安装软件系列之yum安装
自动搜索最快镜像插件: yum install yum-fastestmirror 安装yum图形窗口插件: yum install yumex 1.安装 yum install 全部安装 yum i ...
- Java 数据类型:集合接口Collection之Set接口HashSet类;LinkedHashSet;TreeSet 类
Collection 之 Set 实现类: HashSet TreeSet 特点: 无序. 元素不可重复. (如果试图添加一个已经有的元素到一个Set集合中,那么会添失败,add()方法返回false ...
- Django modules模块
http://www.cnblogs.com/wupeiqi/articles/5246483.html
- 点击DIV触发其他元素的点击事件(案例:点击type="radio" 的input 标签外层DIV,触发内部单选点击选中事件)
方法一: 直接用找到对应dom元素调用.click()方法 $('.user_content').click(function(){ $(this).children()[0].click(); // ...
- 1119 - Pimp My Ride
1119 - Pimp My Ride PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: 32 MB To ...
- 分割字符串StringTokenizer
StringTokenizer 原来是一个遗留类,并未被废弃,只是出于兼容性原因而被保留,在新代码中已经不鼓励使用它了,建议使用 String 的 split 方法或 java.util.regex ...
- Not All Samples Are Created Equal: Deep Learning with Importance Sampling
目录 概 主要内容 "代码" Katharopoulos A, Fleuret F. Not All Samples Are Created Equal: Deep Learnin ...
- 【算法】01-数据结构概述(注意区分jvm堆与堆/jvm栈与栈)
[算法]01-数据结构概述(注意区分jvm堆与堆/jvm栈与栈) 欢迎关注b站账号/公众号[六边形战士夏宁],一个要把各项指标拉满的男人.该文章已在github目录收录. 屏幕前的大帅比和大漂亮如果有 ...