用java实现随机点名若干名同学,且不能重复点名,并输出点过名的同学姓名。同学人数和姓名均从键盘输入
时间: 2024-09-28 07:10:08 浏览: 49
在Java中,可以使用`ArrayList`结合`Random`类和`HashSet`来实现这个需求。首先,我们需要创建一个`Student`类,存储每个学生的姓名,然后读取学生人数和姓名。接下来,我们随机选择学生并添加到列表中,同时避免重复。这里是一个简单的示例:
```java
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;
class Student {
String name;
public Student(String name) {
this.name = name;
}
@Override
public String toString() {
return "Name: " + name;
}
}
public class RandomPointing {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入学生人数:");
int studentCount = scanner.nextInt();
// 创建集合用于存储已点过名的学生
Set<String> pointedStudents = new HashSet<>();
ArrayList<Student> students = new ArrayList<>();
while (students.size() < studentCount) {
// 生成一个0到学生总数-1之间的随机数
int randomIndex = Math.floor(Math.random() * studentCount);
String chosenName = null; // 存储随机选中的名字
// 避免重复点名
do {
chosenName = scanner.next(); // 从键盘获取下一个学生的姓名
} while (pointedStudents.contains(chosenName));
// 将新点到的名加入集合和列表
pointedStudents.add(chosenName);
students.add(new Student(chosenName));
}
System.out.println("已点名的学生有:");
for (Student student : students) {
System.out.println(student);
}
}
}
```
在这个程序中,用户需要一次输入一个学生的姓名,直到达到指定的人数。点过名的学生的姓名会显示出来,因为每次都会检查所选姓名是否已经在集合中。
阅读全文