import java.util.Random; public class ArrayDemo7 { public static void main(String[] args) { //有一个二维数组包含班级的座位 System.out.print("最开始的班级:"); printClassroom(classrooms); System.out.println("==============================="); //打乱班级 shuffleClassrooms(); //打乱后的班级 System.out.print("打乱后的班级:"); printClassroom(classrooms); } // public static String[][] classrooms = { {"张三", "李四", "王五"}, {"赵六", "钱七", "孙八"}, {"周九", "吴十", "郑十一"}, {"王十二", "李十三", "赵十四"}, {"孙十五", "周十六", "吴十七"}, {"郑十八", "孙十九", "周二十"}, {"吴二十一", "郑二十二", "孙二十三"}, {"周二十四", "吴二十五", "郑二十六"}, {"孙二十七", "周二十八", "吴二十九"}, {"郑三十", "孙三十一", "周三十二"}, }; //打印出当前班级所有人 public static void printClassroom(String[][] number) { for (int i = 0; i < number.length; i++) { for (int j = 0; j < number[i].length; j++) { System.out.print(number[i][j]+"\t"); } System.out.println(); } } //随机调换座位 public static void shuffleClassrooms() { Random random = new Random(); // int totalStudents = classrooms.length*classrooms[0].length;//一维数组长度为10 int totalStudents = 0; //计算总学生数 for(int i = 0; i < classrooms.length; i++){ totalStudents += classrooms[i].length; } //1、把二维数组变成一维数组 String[] flatArray = new String[totalStudents]; int index = 0; for (int i = 0; i < classrooms.length; i++) { for (int j = 0; j < classrooms[i].length; j++) { flatArray[index] = classrooms[i][j]; index++; // 增加index变量的递增(因为未加该段导致所有的学生都存储到了flatArray的第一个位置中,导致后续位置为空) } } //2、打乱一维数组 for (int p = 0; p < flatArray.length; p++) { int randomIndex = random.nextInt(flatArray.length); String temp = flatArray[p]; flatArray[p] = flatArray[randomIndex]; flatArray[randomIndex] = temp; } //3、把一维数组还原成二维数组 int index1 = 0; for (int a = 0; a < classrooms.length; a++) { for (int b = 0; b< classrooms[a].length; b++) { classrooms[a][b] = flatArray[index1++]; } } } }
Java-二维数组-打乱班级位置
于 2025-03-24 17:46:49 首次发布