数字游戏
来源:互联网 发布:阿里云的机房 编辑:程序博客网 时间:2024/05/01 00:38
学习过程中一些有意义的题目。
要求:从控制台输入一个奇数n,会打印出来一个n*n的正方形,并且每一行、每一列、对角线上的数加起来都相同。
例如:3
控制台便会打印出如下所示内容
8 1 6
3 5 7
4 9 2
其中的一些规律为:
一:1永远放在第一行的中间
二:下一个数字放在之前数字的右上角,如果放不下,就转方向。
行超出范围:移到同一列的最后一行。
列超出范围:移到同一行的第一列。
三:如果数字是给定数字的倍数,下一个数字直接放该数字下方
具体代码如下:
Shulun.java
import java.util.*;class Shulun {public static void main(String[] args) {Scanner sc=new Scanner(System.in);System.out.println("请输入一个奇数:");int n=sc.nextInt(); //从控制台接收一个数字if(n%2==0 || n<=0) //判断是否是奇数{ System.out.println("您输入的不是奇数,请重新输入!");} System.out.println("您输入的数字是:"+n);int[][] rz=new int[n][n];//定义一个n*n数组 int x=0; //x代表行下标int y=0; //y代表列下表/*8 1 63 5 74 9 2*/for(int i=1;i<=n*n;i++) //将值放在各自的位置上{ if(i==1) //1放在第一行的中间{ y=n/2;}else if(i%n==1) //如果上一个数是n的倍数,那么下面这个数直接放上一个数的下面{ x++; //容易出错的地方,按理说只写这一句就好了,但运行结果不正确需改进,所以有下面两行 x++; y--;}else if(x<0) //行超出范围,移到这一列的最后一行{ x=n-1;}else if(y>=n) //列超出范围,y归0{ y=0;} rz[x][y]=i; //将i的值放在相应的位置System.out.println("rz["+x+"]["+y+"]"+"="+i);x--; //下一个数放在右上角y++;}for(int i=0;i<rz.length;i++) //循环输出{ for(int j=0;j<rz.length;j++){System.out.print("\t"+rz[i][j]+"\t");}System.out.println();}}}
运行结果如下图所示:
- 数字游戏
- 数字游戏
- 数字游戏
- 数字游戏
- 数字游戏
- 数字游戏
- 数字游戏
- 数字游戏
- 数字游戏
- 数字游戏
- 数字游戏
- 数字游戏
- 数字游戏
- 数字游戏
- 数字游戏
- 数字游戏
- 数字游戏
- 数字游戏
- 【Poco】Poco::BypeOrder的例子
- struts1 配置
- java常量池
- Objective-C内存管理教程和原理剖析(四)系统自动创建新的autorelease pool
- 4.2.3 串的块链存储表示
- 数字游戏
- 基于HalfEdge模型加面算法分析(2)
- “真希望我第一次创业时就知道的事”
- Mac OS X 下隐藏文件的方法及解除方法
- Linux十大发行版
- 编译,链接相关的问题。-fPIC ,地址无关代码,等等
- 求1000以内的水仙花数
- ALSA声音编程(英译)
- 程序猿要学的知识