二维数组九宫格的翻转

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();
	}


}

}

猜你喜欢

转载自blog.csdn.net/sttreven/article/details/89263364