public class Test { public static void main(String[] args) { int[][] arr = new int[3][3]; int a = 2;// 第三行的行下标 int b =3/2;//第二列的列下标 for (int i = 1; i <= 9; i++) {// 给数组赋值/* 这里有个疑问,i-max=9,那么a++应该等于11,那么当i=9的时候,首先 arr[a++][b++]好像就不成立了 ,因为把i=9带入下面的判断,那么a应该等于9,而a++是<=3的,。那么是什么问题 还是这个a++代表的不是下标,而是这一行的某个值? */ arr[a++][b++] = i; if (i % 3 == 0) { a = a - 2; b = b - 1; } else { a = a % 3; b = b % 3; } } System.out.println("输出九宫格:"); for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { System.out.print(arr[i][j] + " "); } System.out.println("\n"); } }}
3 回答
已采纳
qq_凯_29
TA贡献7条经验 获得超1个赞
第一次执行arr[a++][b++] 相当于 arr[2][1]=1这时a=3,b=2
第二次执行arr[a++][b++] 相当于 arr[0][2]=2这时a=1,b=3
第三次执行arr[a++][b++] 相当于 arr[1][0]=3这时a=2,b=1
因为i%3=0所以a=0,b=0
第四次执行arr[a++][b++] 相当于 arr[0][0]=4这时a=1,b=1
第五次执行arr[a++][b++] 相当于 arr[1][1]=5这时a=2,b=2
第六次执行arr[a++][b++] 相当于 arr[2][2]=6这时a=3,b=3
因为i%3=0所以a=1,b=2
第七次执行arr[a++][b++] 相当于 arr[1][2]=7这时a=2,b=3
第八次执行arr[a++][b++] 相当于 arr[2][0]=8这时a=3,b=1
第九次执行arr[a++][b++] 相当于 arr[0][1]=9这时a=1,b=2
添加回答
举报
0/150
提交
取消