要求:给定n个名字组成一个数组,程序启动后用户控制”1:点名“,”0:退出“,点击1后随机抽取一个姓名并打印到控制台,并从名字数组中删除,然后下一次从剩余的名字中随机抽取,若用户输入的是0,则直接退出程序,或全部名字点完也自动退出。
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Random rd = new Random();
String t; // 临时交换变量
System.out.println("*********欢迎使用java控制台随机点名器*********");
String[] names = {"张三","李四","王五","赵六","无名7","无名8","无名9","无名10","无名11"};
flag: for(int i=0;i<names.length;i++) { // 循环n次
// 1.提示用户操作
System.out.println("请选择,1:点名,0:退出。");
int op = sc.nextInt(); // 获取用户操作
switch (op){
case 1: {
int r = rd.nextInt(names.length-i); // 随机获得一个下标
System.out.println(names[r]);
// 不能重复抽取,取出的和最后一个做交换
t = names[r];
names[r] = names[names.length-i-1];
names[names.length-i-1] = t;
break;
}
case 0:{
System.out.println("********点名系统退出,感谢使用********");
break flag;
}
default:{
System.out.println("你的输入有误,请重新输入。");
}
}
}
}
程序试执行,结果如下:
- 欢迎使用java控制台随机点名器
- 请选择,1:点名,0:退出。
- 1
- 无名8
- 请选择,1:点名,0:退出。
- 1
- 张三
- 请选择,1:点名,0:退出。
- 1
- 无名11
- 请选择,1:点名,0:退出。
- 0
- 点名系统退出,感谢使用