用JAVA编写程序,在类Network2023中,给自己班级定义一个随机点名方法randomCall()。想想办法如何不让它重复点名。
时间: 2024-09-24 14:09:42 浏览: 32
计算机网络的最终项目,一个用Python编写的聊天室,名为network pj chatroom.zip
在Java中,为了实现给班级随机点名并且避免重复,我们可以使用`java.util.Random`类生成随机数,并结合列表或数组来存储已经点过名的学生名字。这里是一个简单的示例:
首先,创建一个表示学生对象的类,假设名为`Student`:
```java
public class Student {
private String name;
// 构造函数、getters和setters省略
@Override
public boolean equals(Object obj) {
if (obj instanceof Student) {
return this.name.equals(((Student) obj).getName());
}
return false;
}
@Override
public int hashCode() {
return Objects.hash(name);
}
}
```
然后,在`Network2023`类中定义一个包含所有学生的列表:
```java
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
public class Network2023 {
private List<Student> students;
private Random random;
public Network2023(List<Student> students) {
this.students = students;
this.random = new Random();
}
public void randomCall() {
if (students.isEmpty()) {
System.out.println("班级里没有人了!");
return;
}
// 使用HashSet来存储已点过名的人员,因为它不允许有重复元素
Set<Student> calledStudents = new HashSet<>(students.size());
while (!calledStudents.containsAll(students)) {
// 随机选择一个未被点名的学生
int index = random.nextInt(students.size());
Student studentToCall = students.get(index);
// 点名并移除该学生,避免重复
System.out.println("现在轮到" + studentToCall.getName() + " 上台");
calledStudents.add(studentToCall);
students.remove(studentToCall);
}
}
}
// 示例用法:
List<Student> studentsList = ...; // 初始化学生列表
Network2023 network = new Network2023(studentsList);
network.randomCall();
阅读全文