- public class text {
- public static void main(String[] args) {
- // 根据n创建一个二维数组
- int n = 5;
- int[][] arr = new int[n][n];
- // 调用数组赋值的方法
- method(arr);
- // 将数组遍历出来
- for (int i = 0; i < arr.length; i++) {
- for (int j = 0; j < arr.length; j++) {
- System.out.print(arr[i][j] + "\t");
- }
- System.out.println("\n");
- }
- }
- // 二维数组赋值方法
- public static void method(int[][] arr) {
- // 创建数组的两个索引变量
- int i = 0;
- int j = 0;
- // 通过 max 和min控制索引i,j的变化
- int max = arr.length - 1;
- int min = 0;
- // 所需要赋的值
- int num = 1;
- while (min <= max) {
- // 1、i不变j++ 向右
- while (j < max) {
- arr[i][j++] = num++;
- }
- // 2、j不变i++ 向下
- while (i < max) {
- arr[i++][j] = num++;
- }
- // 3、i不变j-- 向左
- while (j > min) {
- arr[i][j--] = num++;
- }
- // 4、j不变i-- 向上
- while (i > min) {
- arr[i--][j] = num++;
- }
- // 由于可能在n为奇数的时候无法为中心那个数赋值所以要补上这个数的赋值
- if (min == max) {
- arr[i][j] = num;
- }
- max--;
- min++;
- // 循环一圈又开始想有赋值j++
- j++;
- // 由于向上的时候最后一次赋值i多减了一次所以每次外循环都要将i补回来
- i++;
- }
- }
- }
复制代码 这个是别人写的属于简单方法,不过大体思路是一样的都是,从外面一圈圈循环先给数组赋值,这个每一圈赋值的长度都一样(好看懂),上面的我感觉你要是看懂了应该理解的会更深点
|