123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- 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));
- }
- }
|