Java-二维数组-打乱班级位置

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++];

            }
        }
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值