二维数组打乱元素
代码:
//二维数组打乱元素:
package java02;
import java.util.Random;
public class Shuffle2DArrayElements {public static void main(String[] args) {//用静态初始化法定义一个二维数组:int[][] arr1 = new int[][]{{1,2,3},{4,5,6,7},{8,9}};//将二维数组转变为一维数组:int index1 = 0;int[] arr2 = new int[9];for(int i = 0; i < arr1.length; i++) {for(int j = 0; j <arr1[i].length; j++) {arr2[index1] = arr1[i][j];index1++;}}//复制数组:int[] tempArr = copyArr(arr2);//防止打乱后的数组仍然未打乱:boolean result = true;while(result) {//打乱一维数组:Random r = new Random();int count1 = r.nextInt(arr2.length);int count2 = r.nextInt(arr2.length);int temp = arr2[count1];arr2[count1] = arr2[count2];arr2[count2] = temp;result = sameArr(arr2, tempArr);}//将一维数组还原为二维数组:int index2 = 0;for(int i = 0; i < arr1.length; i++) {for(int j = 0; j < arr1[i].length; j++) {arr1[i][j] = arr2[index2];index2++;}}//打印二维数组:System.out.println("{");for(int i = 0; i < arr1.length; i++) {System.out.print("{");for(int j = 0; j < arr1[i].length; j++) {System.out.print(arr1[i][j] + " ");}System.out.println("}");}System.out.println("}");}//定义一个方法用于判断新的二维数组是否与原来的二维数组一样:public static boolean sameArr(int[] arr2, int[] tempArr){for(int i = 0; i < arr2.length; i++) {if(arr2[i] != tempArr[i]) {return false;}}return true;}//定义一个方法用于数组复制:public static int[] copyArr(int[] arr2) {int[] copyArray = new int[arr2.length];for(int i = 0; i < arr2.length; i++) {copyArray[i] = arr2[i];}return copyArray;}
}
运行结果: