public static void main(String[] args) { Scanner sc = new Scanner(System.in); Random r = new Random(); int[] people = new int[5]; //定义一个动态数组 //定义循环,将员工工号存入数组 for (int i = 0; i < people.length; i++) { System.out.println("请输入第" +(i + 1)+ "个员工工号"); int inpu = sc.nextInt(); people[i] = inpu; } for (int i = 0; i < people.length; i++) { //定义随机号,随机输出员工 int ra = r.nextInt(people.length); int temp = people[ra]; people[ra] = people[i]; people[i] = temp; System.out.print(people[i] + "\t"); } }
这是一开始写入的随机排名码,输出的代码是放在了for循环里面的,运行后的结果老是有重复的,当我在for循环外边添加一次循环输出,发现就不会再有重复了
System.out.println(); for (int i = 0; i < people.length; i++) { System.out.print(people[i]+"\t"); }
其实根本原因就是在于,在随机排序for循环里面输出的并不是真实的存储在数组里面的值,就是当你 i=1,随机数组=2,时输出people【i】=55,当你的 i=2,随机数组=1,这时你输出的还会是people【i】=55,但是i=1与i=2的值已经交换了,但是你在随机for循环里面输出是看不到的,所有要重新建立一个for循环,遍历一遍就能看到不重复的啦