package com.sf; import java.util.Arrays; import java.util.Random; import java.util.Scanner; public class Test { public static void main(String[] args) { // 随机点名器 // txt文档中 // 字符串中 “zhangsan、lisi、wangwu” // 输入一个要随机的数量 1 2 // 随机出可能重复的同学名字 // 随机出不重复的同学名字 String str = "赵玉龙、闵圣楠、刘哲、李龚臻、张嫁祥、尹星博、李宏源、牛文睿、王佳强、胡春宇、郭柯雨、唐振亮、王鸿明、芦博智、张文瀚、张甫鑫、张宇璇、李小龙、王毅、孙智凡、孙超、殷碧泉、李斯扬、赵佳硕、杨晨、康雯博、孙辉、李天卓、牛世恒、卢星宇、黄天柯"; String[] splitStr = str.split("、"); System.out.println(splitStr.length); // System.out.println(Arrays.toString(splitStr)); // 输入一个数字 来获取随机的数量 System.out.println("请输出一个要随机的数量:"); Scanner scanner = new Scanner(System.in); int num = scanner.nextInt(); // 有效范围 [1,length] // 小于最小值 大于最大值 // 重新输入 按照最小值和最大值处理 if (num < 1) num = 1; else if (num > splitStr.length) num = splitStr.length; else if (num == splitStr.length) System.out.println(Arrays.toString(splitStr)); // while (num < 1 || num > splitStr.length){ // System.out.println("输入数值不符合范围, 请重新输入:"); // num = scanner.nextInt(); // } // 随机num个不重复的结果 // 存储结果的容器: 数组、list、set // set 用法最简单 随机的范围要在length中 随机的结果存在set中 循环遍历条件要判断set的大小 // list 用法相对简单 也比较多样 // contains()进行去重 循环遍历条件要判断list的大小 // 随机一个移除一个 使用的是动态数组的特性 // Collections.shuffle()洗牌方法 // 数组 随机一个向前覆盖 而且用了 Math.random()随机 其他Random.nextInt() // num = 5 随机的是索引 [0,30] 随机出5个不重复的 // arr = {0,0,0,0,0} 数组初始化的默认值 但是随机结果也有可能是0 // arr = {-1,-1,-1,-1,-1} // arr = {2,-1,-1,-1,-1} // arr = {2,3,-1,-1,-1} // arr = {2,3,7,-1,-1} 有效元素的个数 size 数组中是否存在 contains ArrayList的本质是动态数组 int len = splitStr.length; int[] arr = new int[num]; // 直接输出的是地址 System.out.println(arr); System.out.println(Arrays.toString(arr)); // itar iter 循环的快捷键 for (int i = 0; i < num; i++) { arr[i] = -1; } System.out.println(Arrays.toString(arr)); // 记录有效元素的个数 int count = 0; // 随机两种逻辑 // 去重 while (count < num) { // Random random = new Random(); // int randomInt = random.nextInt(len); // System.out.println(randomInt); int mathRandom = (int)(Math.random() * len); System.out.println(mathRandom); // 判断是否在arr中存在 // 不存在 才赋值 并添加count boolean isExists = false; for (int i = 0; i < num; i++) { if(arr[i] == mathRandom){ isExists = true; break; } } if (!isExists){ // 第一个元素 arr = {-1,-1,-1,-1,-1} // count = 0 // 第二个元素 arr = {2,-1,-1,-1,-1} // count = 1 // 类似于set arr[count] = mathRandom; count++; } } System.out.println(Arrays.toString(arr)); } }