案例:随机点名
首先我们使用Array类把数据转换为集合
先来定义一个存放名字的数组
List<String> list = Arrays.asList("zy","cg","dhh","zyx","zrx");
通过构造方法创建集合,让list集合中的元素一一取出存入ArrayList集合中
ArrayList<String> names = new ArrayList<>(list);
创建扫描器键盘输入 和 随机数
//创建键盘输入
Random random = new Random();
//创建随机数
Scanner scanner = new Scanner(System.in);
然后使用while去循环,对获取的键盘输入的数据进行判断,随机产生索引的一个值,获取索引值对应的内容,然后去打印输出,用remove(移除)随机过的内容,结束循环
//循环
while (true){
System.out.println("点名请输入S/s");
String input = scanner.next();//获取键盘输入的数据进行判断
if (input.equals("S")||input.equals("s")){
int index = random.nextInt(names.size()); //随机产生集合索引范围内的一个值
//通过下标获取集合中的内容
String name = names.get(index);
//打印输出
System.out.println("选中"+name+"啦!");
//移除已随机过的内容
names.remove(index);
}else {
System.out.println("输错了输错了,点不了名!!");
break;//结束循环
}
最后判断一下如果集合为空 就结束循环
if (names.size()==0){
System.out.println("名都点完啦,点不了啦!!");
break;
}
整体代码如下:
public class Test01 {
public static void main(String[] args) {
//综合案例:使用Scanner、Random、Arraylist完成一个不重复的点名程序
//使用Arrays类把数据转换成集合,这个是一个固定数组形式
List<String> list = Arrays.asList("zy","cg","dhh","zyx","zrx");
//通过构造方法创建名单集合:把list集合中元素一一取出存入names集合中
ArrayList<String> names = new ArrayList<>(list);
//创建键盘输入
Random random = new Random();
//创建随机数
Scanner scanner = new Scanner(System.in);
//循环
while (true){
System.out.println("点名请输入S/s");
String input = scanner.next();//获取键盘输入的数据进行判断
if (input.equals("S")||input.equals("s")){
int index = random.nextInt(names.size()); //随机产生集合索引范围内的一个值
//通过下标获取集合中的内容
String name = names.get(index);
//打印输出
System.out.println("选中"+name+"啦!");
//移除已随机过的内容
names.remove(index);
}else {
System.out.println("输错了输错了,点不了名!!");
break;//结束循环
}
//判断 如果集合为空,结束循环
if (names.size()==0){
System.out.println("名都点完啦,点不了啦!!");
break;
}
}
}
}
运行结果如下: