[Java] 纯文本查看 复制代码
package com.itheima;
/**
* 8、写一方法,打印等长的二维数组,要求从1开始的自然数由方阵的最外圈向内螺旋方式地顺序排列。 如: n = 4 则打印:
* 1 2 3 4
* 12 13 14 5
* 11 16 15 6
* 10 9 8 7
* @author admin
*
*/
public class Test08 {
public static void main(String[] args) {
//确定二维数组的长度
int size = 6;
//调用initialize方法对各个变量初始化
initialize(size);
}
//initialize方法
private static void initialize(int size) {
//根据传入的长度创建二维数组
int[][] arr = new int[size][size];
//创建计数器
int count = 1;
//定义圈数(方阵最外圈是第一圈)
int circle = 1;
//调用start方法,开始给数组的各个元素赋值
start(arr,count,circle);
//打印数组
print(arr);
}
//start方法
private static void start(int[][] arr,int count,int circle) {
//将数组长度赋值给size
int size = arr.length;
//判断如果计数器的值超过二维数组元素的个数,就结束方法
if (count > size * size) {
return;
}
//为第circle圈的上边填值
for(int i = circle - 1; i <= size - circle; i++) {
arr[circle - 1] = count++;
}
//为第circle圈的右边填值
for(int i = circle ; i <= size - circle; i++) {
arr[size - circle] = count++;
}
//为第circle圈的下边填值
for(int i = size - circle - 1; i >= circle - 1; i--) {
arr[size - circle] = count++;
}
//为第circle圈的左边填值
for(int i = size - circle - 1; i >= circle; i--) {
arr[circle - 1] = count++;
}
//外圈填完,将circle加1,递归调用
start(arr,count,circle + 1);
}
//打印输出
private static void print(int[][] arr) {
//外层循环控制行数
for(int i = 0; i < arr.length; i++) {
//内层循环控制列数
for(int j = 0; j < arr.length; j++) {
//输出每个元素,并用空格隔开
System.out.print(arr[j] + " ");
}
//换行
System.out.println();
}
}
}
[Java] 纯文本查看 复制代码
package com.heima.other;
public class Test01 {
/**
* 9、 写一方法,打印等长的二维数组,要求从1开始的自然数由方阵的最外圈向内螺旋方式地顺序排列。
*/
public static void main(String[] args) {
int n = 5; //二维数组的长度
int[][] arr = new int[n][n];
int num = 1;
for (int i = arr.length; i > arr.length / 2 ; i--) {
int j = arr.length - i;
for (int k = j; k < i; k++) {
arr[j][k] = num++;
}
for (int k = j + 1; k < i; k++) {
arr[k][i - 1] = num++;
}
for (int k = i - 2; k >= j; k--) {
arr[i - 1][k] = num++;
}
for (int k = i - 2; k > j; k--) {
arr[k][j] = num++;
}
}
int count = 0;
for (int[] is : arr) {
for (int i : is) {
System.out.print(i + "\t");
count++;
if (count % n == 0) {
System.out.println();
}
}
}
}
}