已有101人关注
拓展训练第2题
发表在Java图书答疑 2019-11-07 《零基础学Java》第4章 数组 91页-91页
是否精华
版块置顶:

将1-9存入九宫格,中间数为5,怎样存入使每行,每列,斜着的和相同


// 声明int类型的数组并分配内存(三阶方阵)

int arr[][] = new int[3][3];

// 确定数字“1”的位置

int a = 2;// 第3行的下标

int b = 3 / 2;// 第2列的下标

System.out.println(b);

for (int i = 1; i <= 9; i++) {// 给数组赋值

arr[a++][b++] = i;// 避免数组下标越界

System.out.print(a+"和"+b+" ");

if (i % 3 == 0) {// 如果i是3的倍数

a = a - 2;

b = b - 1;

} else {// 如果i不是3的倍数

a = a % 3;

b = b % 3;

}

}

System.out.println("九宫格:");

// 遍历数组

for (int i = 0; i < 3; i++) {

for (int j = 0; j < arr.length; j++) {

System.out.print(arr[i][j] + " ");// 输出数组中的数据

}

System.out.println();// 换行

}

这些可以解释一下吗

2019-11-07 21:49:41编辑
分享到:
精彩评论 2
根号申
学分:4736 LV12
TA的每日心情
2021-07-16 23:48:46
2019-11-08
沙发

这是比较典型的九宫格算法之一,是不太好理解,你可以在草纸上模拟一下变量运算过程,代码中b的值应该直接写成1。

~~~_1573132471
学分:3 LV1
2019-11-08
板凳

根号申 发表于2019-11-08 09:01

这是比较典型的九宫格算法之一,是不太好理解,你可以在草纸上模拟一下变量运算过程,代码中b的值应该直接写成1。

老师,这个我用单纯的数学推理可以理解,但是

arr[a++][b++] = i;

if (i % 3 == 0) {// 如果i是3的倍数

a = a - 2;

b = b - 1;

} else {// 如果i不是3的倍数

a = a % 3;

b = b % 3;

这一小段循环不太了解

首页上一页 1 下一页尾页 2 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照