本帖最后由 栗新岩 于 2015-4-1 09:06 编辑
- package myjava;
- public class LuoXuan {
- public static void main(String[] args) {
- int n = 17;//输入的行与列数
- int[][] arr = new int[n][n];//创建二维数组
- int x = 0;
- int y = 0;//记录行与列的脚标
- int num = 1;//记录数据//循环次数,一圈为一次循环,需要n/2次循环
- for (int con = 0; con < n / 2; con++) {
- //从左向右
- while (true) {
- arr[x][y] = num;
- if (y == n - 1 - con) {
- break;
- }
- num++;
- y++;
- }
- //从上向下
- while (true) {
- arr[x][y] = num;
- if (x == n - 1 - con) {
- break;
- }
- num++;
- x++;
- }
- //从右向左
- while (true) {
- arr[x][y] = num;
- if (y == 0 + con) {
- break;
- }
- num++;
- y--;
- }
- //从下向上
- while (true) {
- arr[x][y] = num;
- if (x == 1 + con) {
- break;
- }
- num++;
- x--;
- }
- }
- //当n为奇数时,剩最中间一个位置,补上
- if (n % 2 == 1) {
- arr[n / 2][n / 2] = num + 1;
- }
- //打印二维数组
- for (int a = 0; a < n; a++) {
- for (int b = 0; b < n; b++) {
- System.out.print(arr[a] [b]+ "\t");
- }
- System.out.println();
- }
- }
- }
复制代码 |