public class 二维数组的翻转 {
public static void main(String[]args){
int[][]arr=new int [3][3];
// 创建二维数组
// arr[0][0]=1;
// arr[0][1]=2;
// arr[0][2]=3;
// arr[1][0]=4;
// arr[1][1]=5;
// arr[1][2]=6;
// arr[2][0]=7;
// arr[2][1]=8;
// arr[2][2]=9;
//鉴于上述的声明赋值具有规律可循,且是二维数组,因此我们用双重for循环作以精简.代码如下:
for(int i=0;i<arr.length;i++){
for(int j=0;j<arr[i].length;j++){
arr[i][j]=j+1+(3*i); }
//此处的代码是利用二维数组的序列号对所处的该位置的数字赋值
}
//下面代码的作用,实现翻转
for(int i=0;i<arr.length;i++){
for (int j = 0; j < i; j++) {
//经过测试,知道了为什么这哥地方要用j<i,而不是j<arr.length,
// 首先可以肯定的是:必须使用j<i
// 如果使用j<arr.length,则不会实现翻转
// 如果使用j<i,我们再所有的ij序列00/01/02;10/11/12;20/21/22;中发现,只有三个序列是副歌j<i这和条件的
//对应的数字分别为2,3,6;所以,我们再紧接着通过temp的引入,实现ij与ji的互换,即就是2-4;3-7;6-8的互换.
int temp = arr[i][j];
arr[i][j] = arr[j][i];
arr[j][i]= temp;
}
}
//下面代码的作用:打印九宫格
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr.length; j++) {
// 这个时候二维数组的互换就到此结束了,下面去打印一下就行.
// 注意打印的时候,因为已经发生了翻转,所以呢,内层的for循环的判断条件就应该是j<arr[i].length.其实此处
// 写j<arr.length就可以了,但是为了严密期间,就写成 j < arr[i].length
System.out.print(arr[i][j] +" ");
}
System.out.println();
}
}
}