zl程序教程

您现在的位置是:首页 >  后端

当前栏目

JAVA经典数组练习题-随机排名

JAVA经典数组 随机 排名 练习题
2023-09-11 14:22:30 时间

需求

某公司开发部5名开发人员,要进行项目进展汇报演讲,现在采取随机排名后进行汇报。
请先依次录入5名员工的工号,然后展示出一组随机的排名顺序。
比如:
在这里插入图片描述
分析
在程序中录入5名员工的工号存储起来。使用数组。(动态,静态都可以)
依次遍历数组中的每个元素,随机一个索引数据,让当前元素与该索引位置处的元素进行交换。

代码

import java.util.Random;
import java.util.Scanner;

public class ArrayDemo3 {
    public static void main(String[] args) {
        //某公司开发部5名开发人员,要进行项目进展汇报演讲,现在采取随机排名后进行汇报。
        //请先依次录入5名员工的工号,然后展示出一组随机的排名顺序。
        //动态初始化数组
        int[] codes = new int[5];
        //定义一个循环,循环5次,依次录入一个工号存入对应的位置
        Scanner sc = new Scanner(System.in);
        for (int i = 0; i < codes.length; i++) {
            //正式录入工号
            System.out.println("请输入第" + (i + 1) + "个员工的工号:");
            int code = sc.nextInt();
            codes[i] = code;
        }
        //验证初始化数组
        System.out.println("排序前: ");
        for (int i = 0; i < codes.length; i++) {
            System.out.print(codes[i] + "\t");
        }
        System.out.println("------------------------------");//分割线
        Random r = new Random();

        int temp = 0;
        //遍历数组中的每个元素,随机一个索引出来,让该元素与随机索引位置处的元素互换(重点)
        for (int i = 0; i < codes.length; i++) {
            int index = r.nextInt(5);
            //temp 存放变量:备份用 ;index:随机数;codes[i]:原来的数
            temp = codes[i];
            codes[i] = codes[index];
            codes[index] = temp;
        }
        //遍历数组
        for (int i = 0; i < codes.length; i++) {
            System.out.print(codes[i] + "\t");
        }
    }
}

运行结果

在这里插入图片描述

充分理解

假设要让22和35这两个数值进行交换
在这里插入图片描述

22不能直接赋值给35,否则35这个数就丢了。所以我们应该准备一个临时的变量
在这里插入图片描述
所以顺序就是,35赋值给临时变量,临时变量变成了35,然后22 代表数组arr[0]赋值给35,也就是arr[2]。然后临时变量再赋值给arr[0],这样就实现了数据交换了。

静态数组的方法

代码

import java.util.Random;
public class ArrayTest4 {
    //某公司开发部5名开发人员,要进行项目进展汇报演讲,现在采取随机排名后进行汇报。
    //请先依次录入5名员工的工号,然后展示出一组随机的排名顺序。
    public static void main(String[] args) {
        int[] arr = {22,33,35,13,88};
        System.out.println("未排序前:");
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + "\t");
        }
        System.out.println();
        Random random = new Random();
        int temp = 0;

        for (int i = 0; i < 5; i++) {
            //生成了一个0-4的随机数
            int cover = random.nextInt(5);
            temp = arr[i];
            arr[i] = arr[cover];
            arr[cover] = temp;
        }
        System.out.println("随机排序后:");
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + "\t");
        }

    }
}

运行结果

在这里插入图片描述    文章原创,欢迎转载,请注明文章出处: JAVA经典数组练习题-随机排名.。百度和各类采集站皆不可信,搜索请谨慎鉴别。技术类文章一般都有时效性,本人习惯不定期对自己的博文进行修正和更新,因此请访问出处以查看本文的最新版本。