题目:
某公司要五名员工进行汇报,要求用随机排名进行汇报,5名员工的工号为22 ,33,35,23,45,展示随机排名顺序
代码:
public class yunsuan {
public static void main(String[] args) {
int[] id = new int[5];
System.out.println("请输入五个工号:");
Scanner sc = new Scanner(System.in);
for (int i = 0; i < 5; i++) {
int g = sc.nextInt();
id[i] = g;
}
Random r = new Random( );
for (int i = 0; i <id.length ; i++) {
int a = r.nextInt(id.length);
int temp = id[a];
id[a] = id[i];
id[i] = temp;
}
for (int i = 0; i <id.length; i++) {
System.out.println(id[i] + "\t");
}
}
}
代码思路:
1、动态创建一个数组
2、遍历每一个元素,同时每次生成一个随机数,把这个随机数当作索引,让当前被遍历的这个元素与该随机数所对应的元素交换位置,直到所有元素遍历完
代码编写过程出现的问题:
1、刚开始时打算随机生成一列随机数,按照生成的随机数列,打印出一个新数组,但是完成后发现,随机生成一系列数字时,会出现相同数字的情况,导致新数组中数字重复,也就是有的员工没有被安排进来,而有的员工被安排进来好几次
2、交换数组位置时,用一个临时变量来存储该随机数对应的数组,三杯水交换法